Web Storage 瀏覽器端資料儲存機制

2022-06-19 18:21:11 字數 1774 閱讀 7704

這個api的作用是,使得網頁可以在瀏覽器端儲存資料。它分成兩類:sessionstorage和localstorage。

sessionstorage儲存的資料用於瀏覽器的一次會話,當會話結束(通常是該視窗關閉),資料被清空;localstorage儲存的資料長期存在,下一次訪問該**的時候,網頁可以直接讀取以前儲存的資料。除了儲存期限的長短不同,這兩個物件的屬性和方法完全一樣。

它們很像cookie機制的強化版,能夠動用大得多的儲存空間。目前,每個網域名稱的儲存上限視瀏覽器而定,chrome是2.5mb,firefox和opera是5mb,ie是10mb。其中,firefox的儲存空間由一級網域名稱決定,而其他瀏覽器沒有這個限制。也就是說,在firefox中,[a.example.com]([b.example.com](共享5mb的儲存空間。另外,與cookie一樣,它們也受同域限制。某個網頁存入的資料,只有同域下的網頁才能讀取。

通過檢查window物件是否包含sessionstorage和localstorage屬性,可以確定瀏覽器是否支援這兩個物件。

function checkstoragesupport()  else      // localstorage  if (window.localstorage)  else }

sessionstorage和localstorage儲存的資料,都以「鍵值對」的形式存在。也就是說,每一項資料都有乙個鍵名和對應的值。所有的資料都是以文字格式儲存。

存入資料使用setitem方法。它接受兩個引數,第乙個是鍵名,第二個是儲存的資料。

sessionstorage.setitem("key","value");localstorage.setitem("key","value");

讀取資料使用getitem方法。它只有乙個引數,就是鍵名。

var valuesession = sessionstorage.getitem("key");var valuelocal = localstorage.getitem("key");

removeitem方法用於清除某個鍵名對應的資料。

sessionstorage.removeitem('key');localstorage.removeitem('key');

利用length屬性和key方法,可以遍歷所有的鍵。

for(var i = 0; i < localstorage.length; i++)

其中的key方法,根據位置(從0開始)獲得鍵值。

localstorage.key(1);

當儲存的資料發生變化時,會觸發storage事件。我們可以指定這個事件的**函式。

window.addeventlistener("storage",onstoragechange);

**函式接受乙個event物件作為引數。這個event物件的key屬性,儲存發生變化的鍵名。

function onstoragechange(e)

除了key屬性,event物件的屬性還有三個:

值得特別注意的是,該事件不在導致資料變化的當前頁面觸發。如果瀏覽器同時開啟乙個網域名稱下面的多個頁面,當其中的乙個頁面改變sessionstorage或localstorage的資料時,其他所有頁面的storage事件會被觸發,而原始頁面並不觸發storage事件。可以通過這種機制,實現多個視窗之間的通訊。所有瀏覽器之中,只有ie瀏覽器除外,它會在所有頁面觸發storage事件。

**:

瀏覽器核心 移動端瀏覽器核心

主流瀏覽器核心 1 ie瀏覽器 trident核心 2 firefox瀏覽器 gecko核心 3 safari瀏覽器 webkit核心 4 chrome瀏覽器 blink核心 blink是webkit的乙個分支 5 opera瀏覽器 最初是presto,後來是webkit,現在是blink核心 擴充...

瀏覽器端資料儲存

有時需要將網頁中的一些資料儲存在瀏覽器端,這樣做的好處是,當下次訪問頁面時,不需要再次向伺服器請求資料,直接就可以從本地讀取資料。目前常用的有以下幾種方法 cookie會隨著每次http請求頭資訊一起傳送,無形中增加了網路流量,另外,cookie能儲存的資料容量有限,根據瀏覽器型別不同而不同,ie6...

瀏覽器端使用less

less無法在瀏覽器中直接使用,瀏覽器不能識別 less.js 外掛程式的原理是使用ajax,所以需要以http協議開啟檔案,而不是使用檔案協議 file 這裡使用php開啟乙個臨時的伺服器 引入less檔案,引入less.js外掛程式必須在引入less檔案的link標籤中加入type text l...