2016-05-03 4 views
1

マウスボタンが押されていても、ユーザーがビューポートの外にマウスを移動したとき(例:マウスはブラウザのアドレスバーにある)を検出する必要があります。マウスボタンが押されていてカーソルがビューポートから外れているときのマウスの抜けを検出する方法は?

mouseoutmouseleaveを使用して検出することができますが、マウスボタンを押したままビューポートから移動すると、これらのイベントは発生しません。

どのようにすればこの問題を解決できますか?

私はFFとChromeの最新バージョンをターゲットにしています。

http://jsbin.com/gesehoneri/edit?html,output

document.addEventListener('mouseout', function() { 
    console.log('mouseout'); 
}) 
document.addEventListener('mouseleave', function() { 
    console.log('mouseleave'); 
}) 
+1

これを確認してくださいhttp://stackoverflow.com/questions/923299/how-can-i-detect-when-the-mouse-leaves-the-windowこれもhttps://api.jquery.com/ですmouseleave /これがあなたを助けてくれることを願っています –

+0

@PardeepPathaniaあなたのリンクに感謝しますが、私の質問に答えることはできません。マウスボタンを押したときにこのイベントを検出する必要があります。 – GibboK

+0

イベントリスナーをボディに追加するのはどうですか? 'document.body.addEventListener( 'mouseout'、function(){..ここのコードは..}));' – Jeroen

答えて

1

この試してみてください:あなたはウィンドウ内のボタンを押すと、それを保持し、窓の外にマウスを移動し、このコードで

document.addEventListener('mousemove', function(e) { 
 
    var top = e.pageY; 
 
    var right = document.body.clientWidth - e.pageX; 
 
    var bottom = document.body.clientHeight - e.pageY; 
 
    var left = e.pageX; 
 
    if (top < 10 || right < 10 || bottom < 10 || left < 10) { 
 
    console.log('Mouse is out the viewport!'); 
 
    } 
 
});
body, 
 
html { 
 
    height: 100%; 
 
}

0

を、テキストを記録します。これはあなたを助けますか?

function myFunctioName(e){ 
    if(e.pageY < 0 || e.pageY > window.innerHeight) { 
     console.log("outside window vertical"); 
    }; 

    if(e.pageX < 0 || e.pageX > window.innerWidth) { 
     console.log("outside window horizontal"); 
    }; 
} 

window.addEventListener("mousemove", myFunctioName); 
window.addEventListener("mousedown", myFunctioName); 

JQueryなしで使用するために更新され、両方向が含まれています。

関連する問題