HTML DOM の storage イベントとは?基本構文とサンプルコードを解説
HTML DOM の storage イベントは、ウィンドウのストレージ領域(localStorage や sessionStorage)に変更が加えられたときに発生します。このイベントには重要な特徴があり、同じウィンドウ内での変更では発火せず、別のウィンドウやタブがそのストレージ領域を変更した場合にのみトリガーされるという点です。これにより、複数のタブ間でデータの同期を取る処理などに活用できます。
storage イベントの主なプロパティ
イベントオブジェクトからは、以下のような情報を取得できます。
- event.key: 変更されたキーの名前
- event.oldValue: 変更前の値
- event.newValue: 変更後の値
- event.url: 変更が行われたページの URL
- event.storageArea: 変更対象となった Storage オブジェクト
構文
storage イベントをリッスンするための基本的な構文は以下のとおりです。
window.addEventListener("storage", SCRIPT);
サンプルコード
それでは、storage イベントの具体的な使用例を見てみましょう。以下の例では、ボタンをクリックすると新しいウィンドウが開き、そこで localStorage に訪問回数(VISITS)が保存されます。ストレージに変更があったタイミングで、元のページ側の storage イベントが発火し、メッセージが表示されます。
<!DOCTYPE html>
<html>
<body>
<h1>Storage Event Example</h1>
<p>下のボタンをクリックして localStorage に VISITS 項目を作成します</p>
<button onclick="CreateVisits()">CREATE</button>
<p id="Sample"></p>
<script>
var y = 1;
window.addEventListener("storage", DisplayChange);
function DisplayChange(event) {
document.getElementById("Sample").innerHTML = "訪問回数が更新されました";
}
function CreateVisits() {
y++;
var x = window.open("", "WINDOW_1", "width=350,height=350");
x.localStorage.setItem("VISITS", y);
setTimeout(function () { x.close(); }, 4000);
}
</script>
</body>
</html>
実行結果
上記のコードをブラウザで実行すると、次のような画面が表示されます。

CREATE ボタンをクリックすると、新しいウィンドウが開き、localStorage への書き込みが行われます。

さらに、開発者ツールのコンソールタブで localStorage の内容を確認すると、VISITS の値が保存されていることがわかります。

まとめ
storage イベントは、別ウィンドウ・別タブによるストレージへの変更を検知できる便利な仕組みです。タブ間の状態同期やリアルタイムなデータ反映を実装したい場合にぜひ活用してみてください。
-
HTML DOM TouchEventのtouchesプロパティとは?使い方とサンプルコードを解説
TouchEvent touchesプロパティとはHTML DOMのTouchEventにおけるtouchesプロパティは、タッチ面(タッチスクリーンなど)上で発生したすべての接触ポイント(コンタクトポイント)のリストに対応するTouchListオブジェクトを返します。注意:指定されたノード、またはその子ノード上でタッチが発生した場合、その後に続くタッチ操作は、同じノード上で発生していなくてもカウント対象になります。構文TouchListオブジェクトを取得するための構文は以下の通りです。event.touches補足:本記事のタッチイベントのサンプルコードは、モバイル端末やタッチ操作対応デバイ
-
HTML DOM Event typeプロパティとは?イベントの種類を取得する方法を実例付きで解説
HTML DOM Event typeプロパティとはHTML DOMのEvent typeプロパティは、発生したイベントの種類に対応する文字列を返すプロパティです。「click」「keypress」「load」「touchend」など、さまざまなイベントタイプを取得できます。構文イベントの種類を文字列として取得するには、以下のように記述します。event.typeそれでは、Event typeプロパティの具体的な使用例を見ていきましょう。使用例以下のサンプルでは、赤い円形の要素に対して「クリック」または「タッチ」が行われた際に、event.typeでイベントの種類を判定しています。イベントの種