ブラウザの状態に応じてAJAXリクエストをヒットしたいので、ブラウザの最小化および最大化された状態を見つけようとしています。
JavaScript を使用してブラウザの状態を検出する方法を知っている人はいますか?
ブラウザの状態に応じてAJAXリクエストをヒットしたいので、ブラウザの最小化および最大化された状態を見つけようとしています。
JavaScript を使用してブラウザの状態を検出する方法を知っている人はいますか?
これらの状態を検出する唯一の信頼できる方法は、特定のプロパティとイベントを提供するHTML5(これはまだ実験的な機能です)によって提供される可視性APIをチェックすることだと思います
document.hidden // Returns true if the page is in a state considered to be hidden to the user, and false otherwise.
document.visibilityState // Returns a string denoting the visibility state of the document
可視性の変化に対応することもできます
document.addEventListener("visibilitychange", function() {
console.log(document.hidden, document.visibilityState);
}, false);
これはクロスブラウザでは機能せず、特定のブラウザバージョンでのみ利用可能であることに注意してください。
別の質問に対するPiotrek Deの回答は次のとおりです。
GitHub で利用できるきちんとしたライブラリがあります。
https://github.com/serkanyersen/ifvisible.js
例:
// If page is visible right now if( ifvisible.now() ){ // Display pop-up openPopUp(); }
所有しているすべてのブラウザでバージョン 1.0.1 をテストしましたが、次のブラウザで動作することを確認できます。
- IE9、IE10
- FF26.0
- クロム 34.0
おそらくすべての新しいバージョン。
以下では完全には機能しません:
- IE8 - タブ/ウィンドウが現在アクティブであることを常に示します (.now() は常に true を返します)
私はこのコードを使用します
window.addEventListener('blur', function(){
console.log('blur');
}, false);
window.addEventListener('focus', function(){
console.log('focus');
}, false);
Page Visibility APIを試すことができます。このAPIには、現在のページが最小化されているか最大化されているかを検出するブールプロパティdocument.hidden(document.webkitHidden)があります。また、ユーザーが現在のブラウザタブにフォーカスしているかどうかにも依存します。
https://developers.google.com/chrome/whitepapers/pagevisibility
https://developer.mozilla.org/en/DOM/Using_the_Page_Visibility_API