HTML5 高階系列 web Storage

2022-03-04 17:16:52 字數 2274 閱讀 6377

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.set = function (val)

this.remove = function ()

this.clear = function ()

}// 使用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))
觸發事件的時間物件(e 引數值)有幾個屬性:

注意:在谷歌瀏覽器中,需要在不同標籤頁中修改 storage 才會觸發該事件,即 網頁a 監聽該事件,在 網頁b 中修改 localstorage,則 網頁a 會觸發事件函式。但是在 ie 中,在同個網頁修改 localstorage 都會觸發該事件。

ie8 以上就相容,但是比較特別,需要在伺服器上開啟的才支援,直接雙擊開啟檔案的 file:// 是不相容的。

到了 ie11 才支援 file:// 下開啟的,其他瀏覽器的支援程度都很高,包括在手機上的相容。具體相容可檢視:

HTML5 高階系列 web Storage

html5 的 web storage 儲存方式有兩種 localstorage 和 sessionstorage。這兩種方式都是通過鍵值對儲存資料,訪問方便,不影響 效能。他們的用法相同,儲存時間不同。localstorage 的資料儲存在本地硬體上,可以永久儲存,可以手動呼叫api清除資料。se...

HTML5 高階系列 indexedDB 資料庫

乙個 可以有多個 indexeddb 資料庫,但每個資料庫的名稱是唯一的。我們需要通過資料庫名來連線某個具體的資料庫。var request indexeddb.open dbname 1 開啟 dbname 資料庫 request.onerror function e request.onsucc...

HTML5 高階系列 indexedDB 資料庫

在 html5 的本地儲存中,有一種叫 indexeddb 的資料庫,該資料庫是一種儲存在客戶端本地的 nosql 資料庫,它可以儲存大量的資料。從上篇 html5 高階系列 web storage 我們知道 web storage 可以方便靈活的在本地訪問簡單資料,但是對於大量結構化儲存,inde...