ホームページ > ウェブフロントエンド > jsチュートリアル > JavaScript を使用してブラウザ ウィンドウの非アクティブを検出するにはどうすればよいですか?

JavaScript を使用してブラウザ ウィンドウの非アクティブを検出するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-12-20 04:31:12
オリジナル
955 人が閲覧しました

How Can I Detect Browser Window Inactivity with JavaScript?

JavaScript によるブラウザ ウィンドウの非アクティブの検出

多くの Web サイトは、リソースを大量に消費する可能性のあるアクティビティを定期的に実行します。パフォーマンスとユーザー エクスペリエンスを最適化するには、ユーザーがページをアクティブに表示していないときにこれらのアクティビティを一時停止することが有益です。

ウィンドウの非アクティブ検出の問題

ユーザーがブラウザ ウィンドウまたはタブをアクティブに表示することは、Web 開発における基本的な課題です。 window.onfocus イベントと window.onblur イベントは基本的な機能を提供しますが、ユーザーがウィンドウを離れることなく他のタブやアプリケーションにフォーカスを移動できるため、信頼性が低い場合があります。

解決策: ページ表示 API

この問題に対する最新かつ信頼性の高い解決策は、Page Visibility API です。ほとんどの主要なブラウザでサポートされているこの API は、ページまたはタブがユーザーのビューから非表示になったことを検出する方法を提供します。

document.addEventListener("visibilitychange", function() {
  if (document.visibilityState === "hidden") {
    // Pause periodic activities
  } else {
    // Resume periodic activities
  }
});
ログイン後にコピー

残念ながら、この API は IE 10 以前ではサポートされていません。これらの古いブラウザでは、onblur/onfocus および onpageshow/onpagehide イベントを含む信頼性の低いフォールバックを使用できます。

var hidden = "hidden";

// Compatibility checks
if (hidden in document) {
  // Supported: Page Visibility API
} else if ((hidden = "mozHidden") in document) {
  // Mozilla-specific
} else if ((hidden = "webkitHidden") in document) {
  // WebKit-based
} else if ((hidden = "msHidden") in document) {
  // Microsoft-specific
} else {
  // Legacy events
}

function onchange(evt) {
  if (evt.type in evtMap) {
    document.body.className = evtMap[evt.type];
  } else {
    document.body.className = this[hidden] ? "hidden" : "visible";
  }
}
ログイン後にコピー

Page Visibility API とそのフォールバックを利用することで、ウィンドウの非アクティブを効果的に検出し、パフォーマンスを最適化できます。それに応じてコードのパフォーマンスが向上します。

以上がJavaScript を使用してブラウザ ウィンドウの非アクティブを検出するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート