2009-08-03 7 views
3

ユーザーが現在のブラウザタブから別のタブに切り替えるときを検出しようとしています。 window.onblurのリッスンは、ユーザーが別のウィンドウにフォーカスを切り替えるタイミングを検出するためにfirefoxでうまく機能しますが、ユーザーが別のタブに切り替えると起動しないようです。しかし、別のタブから問題のタブに切り替えると、onfocusが起動するように見えます。ユーザーが別のブラウザタブに切り替えると検出できますか?

ユーザーが現在のタブから離れたときに検出する方法はありますか?

+0

**更新:** 2013年、すべての主要なブラウザは、いわゆる[可視性のAPI](https://developer.mozilla.org/en-USのサポートを提供/ docs/Web/Guide/User_experience/Using_the_Page_Visibility_API?redirectlocale = en-US&redirectslug = DOM/Using_the_Page_Visibility_API)。サンプルについてはこちらを参照してください:http://stackoverflow.com/a/19519701/603003 – ComFreek

答えて

8

明らかに、Firefoxでは、イベントハンドラとしてwindow.onblurの代わりにdocument.onBlurを使用すると、タブの切り替えに使用できます。

+0

うわー、それをするとは思わなかったけど、意味があります。ありがとう! –

3

このサンプルコードは私にとってはうまくいったようです。タブを切り替えたときにアラートボックスを表示するようにコードを編集しました(しないでください)。それは無限ループとなりました;-)タスクマネージャを使用してFFを閉じる必要がありました。

出典:http://www.thefutureoftheweb.com/blog/detect-browser-window-focus

function onBlur() { 
    document.body.className = 'blurred'; 
}; 
function onFocus(){ 
    document.body.className = 'focused'; 
}; 

if (/*@[email protected]*/false) { // check for Internet Explorer 
    document.onfocusin = onFocus; 
    document.onfocusout = onBlur; 
} else { 
    window.onfocus = onFocus; 
    window.onblur = onBlur; 
} 
+1

Internet Explorerのこの魔法のチェックは何ですか? –

+0

@maksymko - これは[条件付きコンパイル](http://msdn.microsoft.com/en-us/library/7kx09ct1%28v=VS.80%29.aspx)と呼ばれています。 –

関連する問題