Webkit неожиданно запустил событие mousemove (мышь не двигается) - PullRequest
1 голос
/ 06 января 2012

У меня воспроизводится слайд-шоу, которое прокручивает div, чтобы показать следующую фотографию в слайд-шоу. У меня также есть настроенная функция, которая скрывает описание фотографии, когда мышь неактивна, но показывает описание, когда мышь двигается.

В Firefox проблем нет, div прокручивает новые фотографии, и событие mousemove не запускается. Тем не менее, в Webkit с мышью в окне, но неактивной, два-три события перемещения мыши запускаются каждый раз, когда div прокручивает новую фотографию.

Вот сайт, на который вы можете посмотреть. Перейдите на страницу портфолио в браузере webkit (с открытой консолью, я полагаю), и этот нижний колонтитул должен оставаться скрытым, пока фотографии циклически проходят. http://96.0.13.132/

1 Ответ

13 голосов
/ 06 января 2012

Да, браузеры webkit делают это, и я думаю, что каждый браузер должен. Потому что курсор IS находится в другом положении после прокрутки, и это может избежать многих проблем для разработчика.

В любом случае, если вы хотите избежать его последствий в своем скрипте, просто запишите последние позиции clientX и clientY и проверьте, изменились ли они с момента последнего "перемещения мыши"; как то так:

window.addEventListener("mousemove",function(e){
    if(window.lastX !== e.clientX || window.lastY !== e.clientY){
        // Code when the (physical) mouse actually moves
    }   
    window.lastX = e.clientX
    window.lastY = e.clientY
})
...