Webkit意外触发mousemove事件(鼠标不动)

时间:2012-01-06 17:18:39

标签: javascript javascript-events webkit interactive scrollto

我有一个幻灯片播放,滚动一个div来显示幻灯片中的下一张照片。我还有一个功能设置,可以在鼠标处于非活动状态时隐藏照片描述,但在鼠标移动时会显示说明。

在Firefox中,没有问题,div滚动到新照片并且没有触发mousemove事件。但是,在Webkit中,鼠标在窗口上,但不活动,每当div滚动到一张新照片时,就会触发两到三个mousemove事件。

这是您浏览的网站。在webkit浏览器中导航到投资组合页面(我打开控制台打开),当照片循环播放时,该页脚应保持隐藏状态。 http://96.0.13.132/

1 个答案:

答案 0 :(得分:13)

是的,webkit浏览器会这样做,我认为每个浏览器都应该这样做。因为滚动后光标 IS 处于不同的位置,这可以避免我作为开发人员的许多问题。

无论如何,如果你想在你的脚本中避免它的后果,只需记录最新的clientX和clientY位置,并检查自上次“mousemove”以来这些位置是否有所改变;像这样的东西:

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
})