HTML 5ローカルストレージのlocalStorage、sessionStorage
5606 ワード
1、概要
localStorageとsessionStorageは、Webストレージと総称され、Webページがブラウザ側でデータを格納できるようにします.
sessionStorageに保存されたデータはブラウザのセッションに使用され、セッションが終了すると(通常はウィンドウが閉じる)、データが空になります.localStorageに保存されているデータは長期にわたって存在し、次回このサイトにアクセスする際には、以前保存していたデータを直接Webページで読み取ることができます.保存期間の長さの違いを除いて、この2つのオブジェクトの属性と方法はまったく同じです.
クッキーメカニズムの強化版に似ており、より大きなストレージスペースを使用することができます.現在、ドメイン名ごとのストレージ上限はブラウザによって異なり、Chromeは2.5 MB、FirefoxとOperaは5 MB、IEは10 MBである.ここで、Firefoxのストレージ領域は1級ドメイン名で決定されますが、他のブラウザではこの制限はありません.つまりFirefoxではa.example.comとb.exampleは5 MBのストレージスペースを共有しています.また、クッキーと同様に、同ドメインによって制限されています.あるページに格納されたデータは,同ドメインの下のページのみが読み取ることができる.
WindowsオブジェクトにsessionStorageとlocalStorageのプロパティが含まれているかどうかを確認することで、ブラウザが両方のオブジェクトをサポートしているかどうかを確認できます.
2、操作方法
2.1データの格納/読み出し
sessionStorageとlocalStorageで保存されているデータは、いずれも「キー値ペア」として存在します.すなわち,各データにはキー名と対応する値がある.すべてのデータはテキスト形式で保存されます.
データを格納するにはsetItemメソッドを使用します.2つのパラメータを受け入れます.1つ目はキー名、2つ目は保存されたデータです.
データを読み込むにはgetItemメソッドを使用します.パラメータは1つしかありません.キー名です.
2.2データの消去
removeItemメソッドは、キー名に対応するデータを消去するために使用されます.
clearメソッドは、保存されているすべてのデータを消去するために使用されます.
2.3遍歴操作
lengthプロパティとkeyメソッドを使用すると、すべてのキーを巡回できます.
ここでkeyメソッドは,位置(0から)に基づいてキー値を得る.
3、storageイベント
格納されたデータが変化するとstorageイベントがトリガーされます.このイベントのコールバック関数を指定できます.
コールバック関数はeventオブジェクトをパラメータとして受け入れます.このeventオブジェクトのkeyプロパティは、変化するキー名を保存します.
keyプロパティのほかにeventオブジェクトのプロパティは3つあります.
oldValue:更新前の値.キーが新しく追加された場合、このプロパティはnullです.
新Value:更新後の値.キーが削除された場合、このプロパティはnullです.
url:storageイベントを元にトリガーしたページのURL.
特に、このイベントは、データの変化をもたらす現在のページでトリガーされないことに注意してください.ブラウザがドメイン名の下にある複数のページを同時に開くと、1つのページがsessionStorageまたはlocalStorageのデータを変更すると、他のすべてのページのstorageイベントがトリガーされ、元のページはstorageイベントをトリガーしません.このメカニズムにより、複数のウィンドウ間の通信を実現することができる.すべてのブラウザのうち、IEブラウザのみが除外され、すべてのページでstorageイベントがトリガーされます.
4、参考リンク
[1] Ryan Stewart, Introducing the HTML5 storage APIs
[2] Getting Started with LocalStorage
[3] Feross Aboukhadijeh, Introducing the HTML5 Hard Disk Filler™ API
[4] Ben Summers, Inter-window messaging using localStorage
[5] Stack Overflow, Why does Internet Explorer fire the window “storage” event on the window that stored the data?
[6] ruanyifeng, Web Storage:ブラウザ側データ格納メカニズム
localStorageとsessionStorageは、Webストレージと総称され、Webページがブラウザ側でデータを格納できるようにします.
sessionStorageに保存されたデータはブラウザのセッションに使用され、セッションが終了すると(通常はウィンドウが閉じる)、データが空になります.localStorageに保存されているデータは長期にわたって存在し、次回このサイトにアクセスする際には、以前保存していたデータを直接Webページで読み取ることができます.保存期間の長さの違いを除いて、この2つのオブジェクトの属性と方法はまったく同じです.
クッキーメカニズムの強化版に似ており、より大きなストレージスペースを使用することができます.現在、ドメイン名ごとのストレージ上限はブラウザによって異なり、Chromeは2.5 MB、FirefoxとOperaは5 MB、IEは10 MBである.ここで、Firefoxのストレージ領域は1級ドメイン名で決定されますが、他のブラウザではこの制限はありません.つまりFirefoxではa.example.comとb.exampleは5 MBのストレージスペースを共有しています.また、クッキーと同様に、同ドメインによって制限されています.あるページに格納されたデータは,同ドメインの下のページのみが読み取ることができる.
WindowsオブジェクトにsessionStorageとlocalStorageのプロパティが含まれているかどうかを確認することで、ブラウザが両方のオブジェクトをサポートしているかどうかを確認できます.
function checkStorageSupport() {
var result = {};
//sessionStorage
if (window.sessionStorage) {
result.sessionStorage = true;
} else {
result.sessionStorage = false;
}
//localStorage
if (window.localStorage) {
result.localStorage = true;
} else {
result.localStorage = false;
}
return result;
}
2、操作方法
2.1データの格納/読み出し
sessionStorageとlocalStorageで保存されているデータは、いずれも「キー値ペア」として存在します.すなわち,各データにはキー名と対応する値がある.すべてのデータはテキスト形式で保存されます.
データを格納するにはsetItemメソッドを使用します.2つのパラメータを受け入れます.1つ目はキー名、2つ目は保存されたデータです.
sessionStorage.setItem('key', 'value');
localStorage.setTime('key', 'value');
データを読み込むにはgetItemメソッドを使用します.パラメータは1つしかありません.キー名です.
var valueSession = sessionStorage.getItem('key');
var valueLocal = localStorage.getItem('key');
2.2データの消去
removeItemメソッドは、キー名に対応するデータを消去するために使用されます.
sessionStorage.removeItem('key');
localStorage.removeItem('key');
clearメソッドは、保存されているすべてのデータを消去するために使用されます.
sessionStorage.clear();
localStorage.clear();
2.3遍歴操作
lengthプロパティとkeyメソッドを使用すると、すべてのキーを巡回できます.
for (var i = 0; i < localStorage.length; i++) {
console.log(localStorage.key(i));
}
ここでkeyメソッドは,位置(0から)に基づいてキー値を得る.
localStorage.key(1);
3、storageイベント
格納されたデータが変化するとstorageイベントがトリガーされます.このイベントのコールバック関数を指定できます.
window.addEventListener('storage', onStorageChange);
コールバック関数はeventオブジェクトをパラメータとして受け入れます.このeventオブジェクトのkeyプロパティは、変化するキー名を保存します.
function onStorageChange(e) {
console.log(e.key);
}
keyプロパティのほかにeventオブジェクトのプロパティは3つあります.
oldValue:更新前の値.キーが新しく追加された場合、このプロパティはnullです.
新Value:更新後の値.キーが削除された場合、このプロパティはnullです.
url:storageイベントを元にトリガーしたページのURL.
特に、このイベントは、データの変化をもたらす現在のページでトリガーされないことに注意してください.ブラウザがドメイン名の下にある複数のページを同時に開くと、1つのページがsessionStorageまたはlocalStorageのデータを変更すると、他のすべてのページのstorageイベントがトリガーされ、元のページはstorageイベントをトリガーしません.このメカニズムにより、複数のウィンドウ間の通信を実現することができる.すべてのブラウザのうち、IEブラウザのみが除外され、すべてのページでstorageイベントがトリガーされます.
4、参考リンク
[1] Ryan Stewart, Introducing the HTML5 storage APIs
[2] Getting Started with LocalStorage
[3] Feross Aboukhadijeh, Introducing the HTML5 Hard Disk Filler™ API
[4] Ben Summers, Inter-window messaging using localStorage
[5] Stack Overflow, Why does Internet Explorer fire the window “storage” event on the window that stored the data?
[6] ruanyifeng, Web Storage:ブラウザ側データ格納メカニズム