2009-06-24 15 views
20

ユーザーがページから別のタブに切り替えるたびに発生するイベントと、ユーザーが再びタブに戻ったときに発生する別のイベントを探しています。すべてのブラウザユーザーがブラウザのタブを切り替えるときのイベント

全体

window.onblurとwindow.onfocus don't seem to work correctlyは、私がこのイベントを合成するために見て可能性がプロキシがありますか?

+0

私は、少なくとも、すべてのブラウザで、これが不可能であるかなり確信しています。 –

+0

実際には、ブラウザ間の互換性はそれほど悪くはないようです(http://www.quirksmode.org/dom/events/blurfocus.html)。あなたはFirefoxとSafari/Windowsで二倍のイベントを得ることができますが、回避するのはかなり簡単です。 'window.onfocus/onblur'はブラウザウォーズの前から利用でき、その動作はあまり変わっていません。明らかに実装にはいくつかの_bugs_がありますが、違いはありません。 – lanzz

答えて

30

ブラウザ間でのサポートを提供するMooToolsやjQueryなどのフレームワークをお試しください。彼らは、より信頼性の高いブラウザウィンドウのblurイベントとfocusイベントを検出できるはずです。

私は個人的に多くの成功とjQueryのを使用しています

$(window).blur(function(e) { 
    // Do Blur Actions Here 
}); 
$(window).focus(function(e) { 
    // Do Focus Actions Here 
}); 
+0

クール、jQueryでそれらがどのように実装されているかを見てみるかもしれません。 – EoghanM

+0

@Daniel Hey、実際に私は同じような種類の機能を探していました。 $(window).focus(function(e){//フォーカス操作をここに}};フォーカス内のコンテンツは、ページに他のAjax機能があるたびに実行されますが、1つの小さな変更点です。1.ユーザーが同じページ間を行き来するときにのみ、このコードを実行できますか? –

+1

_5年後:_ありがとう! – MCTaylor17

6

あなたはまたVisibilityAPIを試してみて、使用することができます。

document.addEventListener("visibilitychange", function() { 
    if (document.hidden){ 
     console.log("Browser tab is hidden") 
    } else { 
     console.log("Browser tab is visible") 
    } 
}); 

See also here on Stackoverflow (possible duplicate)

+1

潜在的な解決策へのリンクはいつでも歓迎ですが、[リンクの前後にコンテキストを追加](// meta.stackoverflow.com/a/8259)、あなたの仲間のユーザーが何を考えているかをお知らせくださいそれはなぜそこにあるのですか? **ターゲットサイトが到達不能であるか、または永続的にオフラインになる場合に、重要なリンクの最も関連性の高い部分を常に引用します。**外部サイトへのリンク以上であることを考慮すると、[理由と理由いくつかの回答はどのように削除されますか?](// stackoverflow.com/help/deleted-answers) – Makyen

関連する問題