我剛剛寫了一些代碼(和它的作品),用於在鼠標位於4個矩形(不同矩形的不同文本)上時在鼠標附近顯示一些文本。我用html標籤< map> </map>,css和jquery。一切正常。當鼠標移動到圖片上時,我不喜歡100%的CPU使用率。jQuery Mousemove和性能問題
這是一個jquery部分:
$('area').each(function(){
var area = $(this),
alt = area.attr('alt');
area.mousemove(function(event){
var tPosX = event.pageX +10;
var tPosY = event.pageY - 85;
$('#rectangletext').css({top: tPosY, left: tPosX});
$('#rectangletext').html(alt);
}).mouseleave(function(){
$('#rectangletext').html('');
});
});
我在IE,FF,鉻和歌劇測試它(在同一時間,在同一計算機上)。當你移動你的鼠標時,Area.mousemove吃100%的CPU。問題是:如何減少在地圖上移動鼠標時所需的資源? IE是最差的--CPU使用率跳到100%。 FF約67%-100%。歌劇吃的不到62%(從不超過62%)。 Chrome是最好的:平均約爲28%,最高爲42%。
將文本重新定位到靠近鼠標的位置並不是每毫秒,而是每隔300毫秒(如果它有助於減少所需的資源)即可。怎麼做? 這個問題比使用mouseenter而不是mousemove更好的解決方案? mouseenter的缺點是它不會更新彈出文本的位置,直到調用mouseleave。
謝謝。
工作正常,非常感謝。唯一的問題是你必須爲prevDate設置值(任何小數字),因爲對於聲明的prevDate而言,如果(date - prevDate> 300)沒有任何值,則始終爲false,因此不顯示任何內容。謝謝!順便說一句,對於100 IE仍然使用100%CPU,對於200ms IE使用約80%CPU,對於300ms約68%,對於400ms約60%。謝謝。 – Haradzieniec