2

出于某种原因,在 PC 上的 chrome 中(在 mac 上不会发生),当您进入全屏模式时,会弹出一个内置的小 chrome div,说您现在处于全屏模式,当该 div 消失时,它会触发一个mousemove事件。知道为什么吗?

var idleTimer;
$videoContainer.mousemove(function()
{
    if (!$jsplayer.prop('paused'))
    {
        if (idleTimer)
        {
            clearTimeout(idleTimer);
            $videoControls.stop(true,true).animate({opacity:1}, animationDuration);
        }
        idleTimer = setTimeout(function(){
            $videoControls.stop(true,true).animate({opacity:0}, animationDuration);
        },3000);
    }
});

当鼠标实际上没有移动时,它基本上会导致我的空闲鼠标功能触发。这似乎只发生在 chrome 中。PC 上的 Firefox 不这样做,mac 上的 chrome 不这样做。我在用google chrome 30.0.1599.69 m

解决方案

var idleTimer;
var prevX;
$videoContainer.mousemove(function(e)
{
    if (!$jsplayer.prop('paused'))
    {
        if (idleTimer)
        {
            clearTimeout(idleTimer);
            if (prevX != e.clientX) $videoControls.stop(true,true).animate({opacity:1});
        }
        prevX = e.clientX;
        idleTimer = setTimeout(function(){
            if (!$jsplayer.prop('paused')) $videoControls.stop(true,true).animate({opacity:0}, animationDuration);
        },3000);
    }
});
4

1 回答 1

1

你可以使用这样的函数:

(注意:我使用全局变量window,记得用你的全局变量更改它!)

window.prev_x = null;
function mousemover(e) {
    if ((window.prev_x != null) && (window.prev_x != e.x)) {
        alert(e.x + ' - '+ window.prev_x);
    }
    window.prev_x = e.x;
};
document.addEventListener('mousemove', mousemover, false);

为避免此事件,我猜想当鼠标更改此窗口然后返回Chrome 的 DOM时会触发该事件。

于 2013-10-10T19:55:15.317 回答