この記事では、Storage Event を使用してページ間通信を実現するためのサンプルコードに関する情報を中心に紹介します。必要な方は参考にしていただければ幸いです。
window.onstorage をトリガーするには、次の 2 つの条件を満たす必要があることは誰もが知っています:
localStorage.setItem または sessionStorage.setItem を通じて特定のストレージを保存 (更新) する
このストレージを保存 (更新) するとき、その新しい値は以前の値とは異なる必要があります
上記の 2 番目の条件は、簡単に言うと次のとおりです。ストレージが存在しないため、その値が null であるため、ストレージの初期化であるか、既存のストレージの更新であるかのいずれかです。
例:
// 初始化storage window.localStorage.setItem('a', 123); // 注册onstorage事件 window.onstorage = (e) => { console.log(e); }; // 更新storage window.localStorage.setItem('a', 123);
上記のコードの最後の行は、 Onstorage イベントをトリガーしません。 a の値が変化していないため、前後で 123 であるため、ブラウザーはこの更新が無効であると判断します。
onstorage イベントはブラウザーによってトリガーされるため、複数のファイルを開いた場合ページの下に同じドメイン名のページを配置し、いずれかのページで window.localStorage.setItem メソッドを実行します (記事の冒頭で説明した 2 番目の条件が満たされていることも確認します)。その後、他のページが onstorage イベントをリッスンするかどうかを確認します。 、これらのページの onstorage イベント コールバックが実行されます
例:
// http://www.example.com/a.html <script> // 注册onstorage事件 window.onstorage = (e) => { console.log(e); }; </script>
// http://www.example.com/b.html <script> // 注册onstorage事件 window.onstorage = (e) => { console.log(e); }; </script>
// http://www.example.com/c.html <script> // 触发onstorage事件 window.localStorage.setItem('a', new Date().getTime()); </script>
a ページと b ページの後に c ページが開かれている限り (3 つのページが開いていなくても)同じブラウザ ウィンドウの場合、ウィンドウとタブ ページを区別する必要があります) 違い)、ページ a とページ b の onstorage イベントがトリガーされます
これで、ストレージ イベントを使用して通信を実現する方法がわかりました。ページ間で、このコミュニケーションは私たちにとって何の役に立つのでしょうか?
実際に必要なのは、どのストレージ更新操作が onstorage イベントをトリガーしたかを知ることだけです。 onstorage イベント コールバックは、他のイベント コールバック関数と同様に、イベント オブジェクト パラメーターも受け取ります。このオブジェクトには、次の 3 つの便利なプロパティがあります。
key は初期化または更新されます。 キー名。ストレージの
Html5 ビデオ チュートリアルをご覧ください。
関連する推奨事項:以上がストレージイベントを使用したページ間の通信を実装するサンプルコードの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。