ホームページ  >  記事  >  ウェブフロントエンド  >  ストレージイベントを使用したページ間の通信を実装するサンプルコード

ストレージイベントを使用したページ間の通信を実装するサンプルコード

青灯夜游
青灯夜游転載
2018-10-09 16:46:511918ブラウズ

この記事では、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(&#39;a&#39;, new Date().getTime());
</script>

a ページと b ページの後に c ページが開かれている限り (3 つのページが開いていなくても)同じブラウザ ウィンドウの場合、ウィンドウとタブ ページを区別する必要があります) 違い)、ページ a とページ b の onstorage イベントがトリガーされます

これで、ストレージ イベントを使用して通信を実現する方法がわかりました。ページ間で、このコミュニケーションは私たちにとって何の役に立つのでしょうか?

実際に必要なのは、どのストレージ更新操作が onstorage イベントをトリガーしたかを知ることだけです。 onstorage イベント コールバックは、他のイベント コールバック関数と同様に、イベント オブジェクト パラメーターも受け取ります。このオブジェクトには、次の 3 つの便利なプロパティがあります。

  • key は初期化または更新されます。 キー名。ストレージの

  • #oldValue は、ストレージが初期化または更新される前の値です。

  • newValue は、ストレージが初期化または更新された後の値です

これら 3 つの主要な属性を組み合わせることで、ページ間のデータ同期を実現できます

最後に、localStorage と sessionStorage の違いについて触れましょう

localStorage に保存されるものデータの有効期限設定はなく、sessionStorage に保存されたデータはページセッションが終了するとクリアされます。

概要: 上記がこの記事の全内容です。皆様の学習に役立つことを願っています。 。関連チュートリアルの詳細については、

Html5 ビデオ チュートリアルをご覧ください。

関連する推奨事項:

php 公共福祉トレーニング ビデオ チュートリアル

HTML5 グラフィック チュートリアル

HTML5オンライン マニュアル

以上がストレージイベントを使用したページ間の通信を実装するサンプルコードの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はjb51.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。