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

基本的に、マウスが実際に動いていないときに、アイドルマウス機能が起動します。これはクロムでのみ発生しているようです。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.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 に答える