クライアントサイドストレージ – Web Storageについて(その3)

javascript

クライアントサイドストレージ – Web Storageについて(その3)

前々回の投稿で少しだけ登場しましたが、

localStorageにキーと値を登録(更新)する時に

localStorage.test1 = "テストA";

と書くケースと、違うケースとして

localStorage.setItem("test1", "テストA");

と書く方法があると紹介しました。

ここでは、少し深く掘り下げて後者の書き方を試してようと思います。

具体的に後者の書き方のことを Strage API と呼び、
Strage API を使って、データの登録、呼び出し、削除等をプロパティを使って行うことができます。

Strage APIについて

Strage APIを使ったデータの操作についてまとめます。

データの登録、更新

setItem()メソッドを使います。

localStorage.setItem("test1", "テストA");

データの取得

getItem()メソッドを使います。

localStorage.getItem("test1");

上記の場合、「テストA」という文字列が取得できます。

データの削除

remoteItem()メソッドを使います。

localStorage.remoteItem("test1");

ローカルストレージからキー「test1」のデータを削除します。
キーと値の両方を削除します。

データの削除(ストレージからの全削除)

clear()メソッドを使います。

localStorage.clear();

全ローカルストレージを削除します。

Storage イベントについて

Storage APIを使用してデータの登録、更新、削除、等を行ったタイミングで、
windowオブジェクトでストレージイベントが発生します。

ここでポイントとなるのがwindowオブジェクトに対して発生するという点です。
具体的には、同じURLの画面をタブで2つ開いている場合や、画面内にフレームが存在し、
そのフレームで同一出身ポリシーの画面を開いている場合。ということが言えます。

また、登録するデータが既存と同じデータの場合は、このイベントは発生しません。
データが異なる場合にイベントが発生します。

Storage イベントを使う場合、addEventListener()を使用する他、windowオブジェクトに
onstorageプロパティを設定することでイベント発火を拾えます。

具体的には、次のような書き方になります。

addEventListenerを使う場合

window.addEventListener("storage", function(event)
{
    // ここで何らかの処理をする
    
});

onstorageプロパティを使う場合

window.onstorage = function(event)
{
    // ここで何らかの処理をする
    
}

Storage イベントの属性について

上記のaddEventListenerとonstorageプロパティの例では、
処理内容を全く記載していませんが、

functionの引数として渡ってくるイベントオブジェクト「event」に対しては、
次のようなプロパティがあります。

key
newValue
oldValue
storageArea
url

それぞれ、以下の意味があります。

key
 変更されたキーを表す
 clear()が呼び出された場合はnull

newValue
 key の新しい値
 removeItem()が呼び出された場合はnull

oldValue
 key の元の値
 新規登録時はnull

storageArea
 ストレージオブジェクトを取得(localStorage または sessionStorageの使用されているオブジェクト)

url
 keyが変更されたドキュメントのURL(文字列形式)

このStorage イベントを利用すると、同一出身ポリシーで呼び出されたwebアプリケーションで、
別タブや別ウィンドウで表示しているDOM操作を行ったタイミングで、
localStorageやsessionStorageを使いデータを保持し、値が変更されたタイミングでイベントを発火し、
別タブや別ウィンドウになんらかのイベントを発生させて同期を取るアプリケーションにすることができます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です