2016-05-27 4 views
1

一見単純なタスクのための非JQueryソリューションを探しています。マウスがページを離れるときの検出。しかし、標準的な方法を使用して:カーソルがエッジに触れていない場合、マウスカーソルがWebページを離れると、どのように検出されますか?

document.onmouseleave 
//or 
document.onmouseout 

は、マウスがエッジからページを離れる場合にのみ機能します。

つまり、フォーカスが高い別のプログラム(例:Notepad.exe)にマウスを移動すると、が失敗します。ブラウザが最小化されている場合
はまた失敗します(例:勝利 + D)、またはAltキー + タブが使用されている場合。 おそらく他の方法で失敗する可能性があります。

他のどの方法でも、マウスの離脱を検出することができますか?おそらく投票しても?
これはChrome + Windowsで動作する必要がありますが、理想的には最新のブラウザで動作する必要があります。

更新
dman2306には、ブラウザが最小化されたときに検出するためのいくつかのメソッドにリンクしています

私はただのWindows 8.1上でChromeの最新バージョンで動作することが確認
document.addEventListener("visibilitychange", function() { 
    doThings(); 
}, false); 

。それはちょうど、別のウィンドウの端を経由して流出するカーソルの問題を残し、またはAltキー + タブを使ってその

+0

これを行う理由は何ですか? –

+0

Well minimizingとは、マウスが左を向いているという意味ではありませんが、このテクニックを使用して最小限の検出を行うことができます。http://stackoverflow.com/questions/10328665/how-to-detect-browser-minimize-and-maximize-state -in-javascript – dman2306

+0

@ dman2306マウスがExcelのものをクリックしている場合、それはまだブラウザに残っていると本当に言いたいですか? – Bort

答えて

1

あなたがしたいことをするイベントonblurがあります。

window.onblur = function() { 
     console.log('blur'); 
    } 
+0

それは本当に機能します!ですから、window.onblurとdocument.onmouseleaveを組み合わせることで、ページを騙してマウスがまだページに入っていると思うような方法を見つけることはできません! – Bort

+0

@Bort - あなたの問題が本当に解決された場合は、この回答に**答え**を記入してください。 –

+0

はい私はしますが、他の人が間違っている/間違っている/非効率的であることを他の人が証明できるようにしばらく時間を置いています。例:私は行方不明の別のイベントがある可能性があります。 – Bort

0

onfocusoutイベントの別のハンドラを追加して、別のプログラムがフォーカスを取得したかどうか、またはウィンドウが最小化されたかどうかを検出できます。

+0

私は "document.onfocusout = function(){alert(" test ")};"クロールでアラートをトリガーできませんでした()。 – Bort

+0

しかし、クロムで試してみると "onblur"イベントを使用してみてください。 –

関連する問題