LocalStorageを使用してタブ間で通信できます。値を書くたびに、すべてのタブ(現在のタブを除く)のウィンドウオブジェクトに「ストレージ」イベントが起動されます。
http://diveintohtml5.info/storage.html
「HTML5ストレージエリアの変更の追跡」まで下にスクロールします
イベントには含まれます event.key
, event.newValue
, event.oldValue
.
これは最新のブラウザでのみ機能します。
質問
特定のウェブサイトの外国のインスタンスを見つけることは可能ですか? Ofc Theeseは独立して開かれたタブです(window.openではなく)。ユーザーが2つのタブを開くのを防ぎ、以前に開いたタブにメッセージを送信して、2つのタブを開くことが不可能であることを通知する必要があります。 2つの依存タブは、ページのオフラインストレージとWebQL構造を破壊する可能性があるため、2つのタブを使用できるようになります。また、セミオフラインアプリであるため、クライアント側のソリューションである必要があります。
解決
LocalStorageを使用してタブ間で通信できます。値を書くたびに、すべてのタブ(現在のタブを除く)のウィンドウオブジェクトに「ストレージ」イベントが起動されます。
http://diveintohtml5.info/storage.html
「HTML5ストレージエリアの変更の追跡」まで下にスクロールします
イベントには含まれます event.key
, event.newValue
, event.oldValue
.
これは最新のブラウザでのみ機能します。
他のヒント
2021年には、サービスワーカーを使用できます。
https://github.com/gyteng/service-worker-event
通知:サービスワーカーはのみ働いています https プロトコル
LocalStorageを使用してWindowsを追跡できます。窓がクラッシュするときの状況を考慮する必要があります - それはローカルストレージにゴミを残します。いくつかのウィンドウから同時に共通のリソースにアクセスすることは、LocalStorageに基づいてMutexによって実行される場合があります。
私は最近公開しました インターウィンドウ通信ライブラリ (すべての機能はREADMEで説明されています)。スレッドセーフデータ共有、クロスウィンドウロック、イベントブロードキャストを提供します。また、いくつかのIEの問題を解決します。
ブロードキャストチャネルはこれのためのデザインですhttps://developer.mozilla.org/en-us/docs/web/api/broadcast_channel_api
しかし、ネイティブAPIは最新のブラウザのみをサポートしています。すべての古いブラウザもサポートするNPMパッケージがありますhttps://www.npmjs.com/package/broadcast-channel
あなたはそれをコントロールしていません。ユーザーは、基本的にコンピューターで望んでいることを何でも実行できます。