IT用語辞典バイナリ | さくいん | サイトマップ | ヘルプ | お気に入りに追加  
HTML5 JavaScript API
IT用語辞典バイナリ<パソコン用語・コンピュータ辞書>
コンピュータ偉人伝<人物・画像・写真・プログラミング>
コンピュータ偉人伝<人物・画像・写真・プログラミング>
コンピュータ偉人伝<人物・画像・写真・プログラミング>
拡張子辞典<ファイル・変換・変更・表示>
HTML5タグリファレンス
CSS3リファレンス
HTML5 JavaScript API
エクセル関数リファレンス
ITパスポート試験
 
  
  IT用語辞典バイナリ > HTML5 JavaScript API > Web Storageの使い方 > データ変更イベントをハンドリングするには?
  カテゴリ別さくいん

データ変更イベントをハンドリングするには?

データ変更イベントをハンドリングするには

解説

windowオブジェクトには、ローカルストレージであるかセッションストレージであるかを問わず、データ保持領域の内容が変更された時点で発生する「storage」イベントが存在します。

ここで注意しなければならない点は、このイベントは、追加、更新、削除などの変更を行ったドキュメントwindowオブジェクトで発生するのではなく、変更を行ったwindowオブジェクトと同一のセッションストレージないしローカルストレージを共有する、別のwindowオブジェクトで発生するということです。

ただし、Internet Explorerは更新を行ったwindowオブジェクト自身でもstorageイベントが発生します。

たとえば、ローカルストレージの場合では、同じオリジン(スキーム、ドメイン、ポートを合わせたもの。ローカルストレージとセッションストレージの違いは?を参照ください)の複数のページでローカルストレージが共有されるため、ある一つのページがローカルストレージのデータを更新した場合には、オリジンを共有するそれ以外のページでstorageイベントが発生します。

同一のページであっても、複数のタブやウィンドウで開かれていた場合は、その一つでローカルストレージの更新が行われれば、他のタブやウィンドウでstorageイベントが発生します。

セッションストレージの場合では、フレーム内のドキュメントと親ドキュメントは、オリジンが同じであればセッションストレージを共有するため、フレーム内のドキュメントでセッションストレージのデータを更新した場合、親ドキュメントではstorageイベントが発生します。

どちらの場合も、Internet Explorerを除いて、更新を行ったドキュメント自体ではイベントは発生しません。

storageイベントの使い方

Web Storageでは、ローカルストレージとセッションストレージで条件は異なりますが、異なるウィンドウ、タブ、フレームから、同じデータ保持領域にアクセスすることができます。

こうした状況で、他のウィンドウやタブによって、保存されていたデータが予期せず変更されてしまった場合、データの整合性などに問題が発生する可能性があります。

こうした問題を避けるため、storageイベントは「別のウィンドウやタブでデータが変更された」ことを検知するために使用することができます。

以下の例では、別のタブやウィンドウによるローカルストレージの変更を監視し、変更されたのがキー「"myKey"」で、値が「"myData"」以外になっていた場合にログ出力しています。

var storage = localStorage;
var key = "myKey";
var data = "myData";
storage.setItem(key,data);
window.onstorage = function(event){
    if(event.key == key && event.newValue != data){
        console.log("データが変更されました");
    }
}

storageイベントで取得できる情報

storageイベントのハンドラの引数はStorageEventオブジェクトで、行われた変更に関する情報を格納した、以下の属性を持ちます。

名前内容
key更新・追加されたキー。読み取り専用
oldValue更新前の値。読み取り専用
newValue更新後の値。読み取り専用
urlStorageが関連付けられているドキュメントアドレス。読み取り専用
storageArea更新されたStorageインターフェイスオブジェクト。読み取り専用

以下の例では、データ変更イベント時に、行われた変更の各情報をログに書き出しています。

window.onstorage = function(event){
   console.log(event.key);
   console.log(event.oldValue);
   console.log(event.newValue);
   console.log(event.url);
}

関連項目



シャープのマスクシャープのマスク
シャープが製造・販売する不織布マスク。
Surface Book 3Surface Book 3
Microsoftが販売するデタッチャブルPC。
Surface Go 2Surface Go 2
Microsoftが発表した2in1 PC。

 ・ITパスポート試験とは
 ・試験範囲と内容
 ・サンプル問題にチャレンジ

 ・Windowsの歴史
ジョン・マッカーシー LISPの開発者
ジョン・マッカーシー
人工知能の研究分野における第一人者。
スティーブ・ジョブズ Appleの共同創設者
スティーブ・ジョブズ
「Mac」や「iPhone」を生み出した経営者。
デニス・リッチー C言語、UNIXの開発者
デニス・リッチー
C言語の設計、UNIXの開発に携わった人物。
».m4b MPEG-4オーディオファイルの拡張子。 up!
».m4r iPhoneの着メロにするAACファイルにつく拡張子。 up!
».xlsx Excel 2007で作成したファイルのデフォルトの拡張子。
».docx Word 2007の標準的な保存形式。XML形式となっている。

2024年3月29日現在
ランキング1   ICT (用語辞典)
ランキング2   AirDrop (用語辞典)
ランキング3   コンテキスト  (用語辞典)
ランキング4   セグメント  (用語辞典)
ランキング5   アノテーション  (用語辞典)
ランキング6   オムニチャネル  (用語辞典)
ランキング7   スワイプ  (用語辞典)
ランキング8   インスタンス化  (用語辞典)
ランキング9   カラム  (用語辞典)
ランキング10   FOMO  (用語辞典)
RSS 0.91 RSS 1.0 RSS 2.0
IT用語辞典バイナリについて運営会社についてお問い合わせ先テクニカルライター募集利用規約
プライバシーポリシー著作権・商標について協力社一覧Weblio 辞書スマート翻訳英和辞典 - Weblio辞書Weblio英会話
©2023 GRAS Group, Inc. All rights reserved.