HTML5 的 web Storage 儲存方式有兩種:localStorage 和 sessionStorage。
這兩種方式都是透過鍵值對保存數據,訪問方便,不影響網站效能。他們的用法相同,儲存時間不同。
localStorage 的資料保存在本地硬體上,可以永久保存,可以手動呼叫api清除資料。 sessionStorage 儲存在 session 物件中,會在瀏覽器關閉時清除。
web Storage 的大小在瀏覽器上是有限制的,不同瀏覽器大小會有差別,在主流瀏覽器中,大小約為 5M,用來儲存普通資料其實已經足夠。
以localStorage 為例,sessionStorage 用法一樣:
儲存資料:localStorage.setItem(key,value);
範例:
localStorage.setItem('name','Hello World');
當key 相同時會覆寫先前的value,用於修改資料。如果value 為對象,需轉為json 字串,否則你讀取出來的將會是[object Object]
讀取資料:localStorage.getItem(key);
範例:
localStorage.getItem('name'); // Hello World
刪除單一資料:localStorage.removeItem(key);
範例:
localStorage.removeItem('name'); localStorage.getItem('name'); // null
刪除key 為name 的資料後,loaclStorage 裡已經取得不到該數據,則傳回null;
刪除所有資料:localStorage.clear ();
範例:
localStorage.clear();
此時會把localStorage 中的所有資料都刪除。
得到某個索引的key:localStorage.key(index);
範例:
localStorage.setItem('name1','Hello World'); localStorage.setItem('name2','Hello Linxin'); localStorage.key(1); // name2
取得到索引為1的key,即name2。
在實際專案中,可能需要多次對 localStorage 進行操作,我們可以透過一個建構函式來更好的操作。
範例:
var localEvent = function (item) { this.get = function () { return localStorage.getItem(item); } this.set = function (val) { localStorage.setItem(item, val); } this.remove = function () { localStorage.removeItem(item); } this.clear = function () { localStorage.clear(); } } // 使用new字符把构造函数实例化出多个对象 var local1 = new localEvent('name1'); var local2 = new localEvent('name2'); local1.set('Hello World'); local2.set('Hello Linxin'); local1.get(); // Hello World local2.get(); // Hello Linxin
這裡只是簡單的演示,像我們平常在專案中可能要把物件儲存起來,就需要在程式碼裡做些處理。
可以透過監聽window 物件的storage 事件並指定其事件處理函數,當頁面中對localStorage 或sessionStorage 進行修改時,則會觸發對應的處理函數。
window.addEventListener('storage',function(e){ console.log('key='+e.key+',oldValue='+e.oldValue+',newValue='+e.newValue); })
觸發事件的時間物件(e 參數值)有幾個屬性:
以上是HTML5 高級教學之web Storage的詳細內容。更多資訊請關注PHP中文網其他相關文章!