IE userData


前面的話

  IE瀏覽器實現了它專屬的客戶端存儲機制——“userData”。userData可以實現一定量的字符串數據存儲,可以將其用做是Web存儲的替代方案。本文將詳細介紹IE userData

 

概述

  在IE5.0中,微軟通過一個自定義行為引入了持久化用戶數據的概念。用戶數據允許每個文檔最多128KB數據,每個域名最多1MB數據

  [注意]IE9+瀏覽器不支持

  要使用持久化用戶數據,首先必須如下所示,使用CSS在某個元素上指定userData行為

<div style="behavior:url(#default#userData)" id="dataStore"></div>

  或者使用動態生成元素的方式

var memory = document.createElement("div");    // 創建一個元素
memory.id = "_memory";    // 設定一個id名
memory.style.display = "none";    // 將其隱藏
memory.style.behavior = "url('#default#userData')";//附加userData行為 document.body.appendChild(memory);    // 將其添加到document元素中

 

保存數據

  一旦該元素使用了userData行為,那么就可以使用setAttribute()方法在上面保存數據了。為了將數據提交到瀏覽器緩存中,還必須調用save()方法並告訴它要保存到的數據空間的名字。數據空間名字可以完全任意,僅用於區分不同的數據集

var dataStore = document.getElementById("dataStore");
dataStore.setAttribute("name", "Nicholas");
dataStore.setAttribute("book", "Professional JavaScript");
dataStore.save("BookInfo");

  在這段代碼中,<div>元素上存入了兩部分信息。在用setAttribute()存儲了數據之后,調用了save()方法,指定了數據空間的名稱為BookInfo

 

讀取數據

  load()方法用於載入存儲的數據。使用它的時候必須傳遞一個字符串作為參數——類似於一個文件名,該參數用來指定要載入的存儲數據。當數據載入后,就可以通過該元素的屬性來訪問這些名/值對形式的數據,可以使用getAttribute()來査詢這些數據,如下所示

dataStore.load("BookInfo");
console.log(dataStore.getAttribute("name"));//"Nicholas"
console.log(dataStore.getAttribute("book"));//"Professional JavaScript"

  對load()的調用獲取了BookInfo數據空間中的所有信息,並且使數據可以通過元素訪問;只有到載入確切完成之后數據方能使用。如果getAttribute()調用了不存在的名稱或者是尚未載入的名稱,則返回null

  [注意]IE11瀏覽器報錯,IE9、10瀏覽器返回null

 

刪除數據

  可以通過removeAttribute()方法明確指定要刪除某元素數據,只要指定屬性名稱。刪除之后,必須像下面這樣再次調用save()來提交更改

dataStore.removeAttribute("name");
dataStore.removeAttribute("book");
dataStore.save("BookInfo");

  這段代碼刪除了兩個數據屬性,然后將更改保存到緩存中

 

有效期

  默認情況下,通過userData存儲的數據,除非手動去刪除它否則永不失效。但是,也可以通過設置expires屬性來指定它的過期時間。比如,可以給存儲的數據設置時長100天的有效期,如下所示:

var now = (new Date()).getTime();
var expires = now + 100 * 24 * 60 * 60 * 1000;
expires = new Date(expires).toUTCString();
memory.expires = expires;

  IE userData的作用域限制在和當前文檔同目錄的文檔中。作用域沒有cookie寬泛,cookie對其所在目錄下的子目錄也有效。userData的機制並沒有像cookie那樣,通過設置path和domain屬性來控制或者改變其作用域的方式

  userData允許存儲的數據量要比cookie大,但是卻比localStorage以及sessionStorage允許存儲的數據量要小

 

最后

  由於上述代碼只在IE瀏覽器下有效,最好使用IE條件注釋來避免其他瀏覽器載入上述代碼

<!--[if IE]>

<![endif]-->


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM