10
タブまたはウィンドウ間の通信
トレースを残さずにブラウザー(CORSではなく同じドメイン上)の複数のタブまたはウィンドウ間で通信する方法を探していました。いくつかの解決策がありました: ウィンドウオブジェクトの使用 postMessage クッキー ローカルストレージ 1つ目はおそらく最悪のソリューションです。現在のウィンドウからウィンドウを開く必要があり、ウィンドウを開いたままにしておく限り通信できます。いずれかのウィンドウでページをリロードすると、おそらく通信が失われます。 postMessageを使用する2番目のアプローチは、おそらくクロスオリジン通信を可能にしますが、最初のアプローチと同じ問題が発生します。ウィンドウオブジェクトを維持する必要があります。 3番目の方法では、Cookieを使用して、一部のデータをブラウザーに保存します。これは、実質的に同じドメインのすべてのウィンドウにメッセージを送信するように見えますが、問題は、すべてのタブが「メッセージ」を以前に読んだかどうかを確認できないことです。清掃。Cookieを定期的に読み取るには、なんらかのタイムアウトを実装する必要があります。さらに、Cookieの最大長(4KB)によって制限されます。 localStorageを使用する4番目のソリューションは、Cookieの制限を克服するようであり、イベントを使用してリッスンすることもできます。利用方法は、回答欄に記載されています。 2018年の編集:承認された回答は引き続き機能しますが、BroadcastChannelを使用するための最新のブラウザーの新しいソリューションがあります。BroadcastChannelを使用してタブ間でメッセージを簡単に送信する方法を説明する簡単な例については、他の回答を参照してください。