1. ホーム
  2. javascript

[解決済み] JavaScript; 同じオリジンのタブ/ウィンドウ間の通信 [重複].

2023-07-02 05:33:43

質問

ウィンドウAとウィンドウBの2つのウィンドウを持っています。

  • ウィンドウAとウィンドウBは同じドメイン
  • ウィンドウ A とウィンドウ B には親ウィンドウがない。
  1. ウィンドウ A がウィンドウ B の参照を取得することは可能ですか?
  2. ウィンドウAがウィンドウBに何かを通知するための最もエレガントな方法は何ですか? (新しい HTML5 の仕様を含む)

私が知っているのは、これを行う2つの方法です。

  • サーバーによるメッセージング:ウィンドウ B が、ウィンドウ A が何かを通知したかどうかを定期的にサーバーに問い合わせる。
  • ローカル データによるメッセージング (HTML5): ウィンドウ A が何かを通知したい場合、ローカル データを変更し、ウィンドウ B は定期的にローカル データに変更がないかチェックします。

しかし、この2つの方法はそれほどエレガントではありません。

例えば、ウィンドウBの参照を取得して、window.postMessage() (HTML5)を使用するのが良いと思います。

最終的な目標は、Facebookのように、4つのFacebookタブを開いて1つのタブでチャットすると、すべてのFacebookタブでチャットが最新になるようなものを作ることです!これはすてきです。

どのように解決するのですか?

私は、質問で言及された共有ローカルデータの解決策にこだわっています。 localStorage . これは、信頼性、パフォーマンス、およびブラウザの互換性の点で最良のソリューションであると思われます。

localStorage はすべてのモダンブラウザで実装されています。

storage イベントが発生するのは その他の タブが localStorage . これはコミュニケーション上、かなり便利です。

参考文献はこちらで紹介しています。

Web ストレージ

Webstorage - ストレージ イベント