마우스가 4 개의 사각형 (다른 사각형에 대해 다른 텍스트)에 있으면 마우스 근처에 일부 텍스트를 표시하기 위해 일부 코드를 작성했습니다 (작동 함). html 태그 <지도> </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는 마우스를 움직일 때 CPU를 최대 100 %까지 섭취합니다. 문제는 마우스로지도를 움직일 때 필요한 리소스를 줄이는 방법입니다. IE가 최악의 경우 - CPU 사용량이 최대 100 % 뛰어 오른다. FF는 약 67 % -100 %를 먹는다. 오페라는 62 % (결코 62 % 이상)를 먹지 않습니다. 크롬이 가장 좋습니다. 평균 28 %, 최대 42 %입니다.
밀리 초마다가 아니라 필요한 자원을 줄이는 데 도움이되는 경우 300 밀리 초마다 텍스트의 위치를 변경하는 것이 좋습니다. 그렇게하는 방법? mousemove 대신 mouseenter를 사용하는 것보다이 문제에 대한 더 좋은 해결책은 무엇입니까? mouseenter의 단점은 mouseleave가 호출 될 때까지 팝업 텍스트의 위치를 업데이트하지 않는다는 것입니다.
감사합니다.
잘 작동합니다. 고맙습니다. 유일한 문제는 prevDate (모든 소수)에 대한 값을 설정해야한다는 것입니다. 왜냐하면 선언 된 prevDate에 값이없는 경우 (date - prevDate> 300) 항상 false이므로 아무 것도 표시되지 않기 때문입니다. 고맙습니다! BTW, 100 IE는 여전히 100 % CPU를 사용하고, 200ms는 약 80 % CPU를 사용하며, 300ms 약 68 %, 400ms 약 60 %입니다. 고맙습니다. – Haradzieniec