2016-12-09 19 views
0

私はどのブラウザタブがアクティブであるかを見るためにvisibilitychangeイベントを使用しています。私はアクティブなタブを使ってサーバー側でいくつかのイベントを監視し、開いているすべてのタブでこのウォッチャーを実行したくありません。Javascript。フォーカスにタブがないか確認してください

しかし、今は、タブがフォーカスされていなくても、ただ1つのタブでこのウォッチャーを実行したいと考えています。

タブにフォーカスがないかどうかをチェックして、一部のスクリプトが1つのバックグラウンドタブで実行されていることを確認する方法はありますか?

答えて

1

タブ間の通信の問題を解決する必要があります。

  1. クッキー
  2. ローカルストレージ
  3. サーバー側の同期(WebSocketを、Ajaxのプーリングなど)

は、各タブには、共有データセンターにその状態を更新する必要があります:いくつかのオプションがあります。 (上記のいずれか)。

これが完了したら、マスター選択アルゴリズムを使用して、どのタブをサーバーと通信するかを決定する必要があります。あなたの場合、これは最初に開いたタブと同じくらいシンプルにすることができます。

2つの異なるサブドメインが同じローカルストレージにアクセスできないなど、ローカルストレージを使用するときにいくつかの癖があります。 Cookieは、親ドメインも定義できる別の方法です。私は3番目の選択肢はデバッグとより複雑な選択ロジックの追加の点で最高だと言います。

関連する問題