原文:http://www.planabc.net/2008/08/05/userdata_behavior/
現在最流行的本地存儲莫過於 cookie 的應用,但 浏覽器對cookie有很多限制,最大的限制在於其對cookie 總大小,僅為 4K 左右(包括名(name)、值(value)和等號)。
對於復雜一點的應用和需求,僅有的 4K 大小還是有點相形見绌,其實很多浏覽器(IE、Firefox、Safari)本身也提供了自己的本地存儲的功能,或許在特定的環境下能滿足我們。
一、userData behavior
浏覽器支持:IE5.0 或以上
基本語法:
XML:
<Prefix: CustomTag id=sID style=”behavior:url(’#default#userData’)” />
HTML:
<ELEMENT style=”behavior:url(’#default#userData’)” id=sID>
object.style.behavior = “url(’#default#userData’)”
Script:
object.addBehavior (”#default#userData”)
屬性:
expires —— 設置或者獲取 userData behavior 保存數據的失效日期。
XMLDocument —— 獲取 XML 的引用。
方法:
getAttribute() —— 獲取指定的屬性值。
load(object) —— 從 userData 存儲區載入存儲的對象數據。
removeAttribute() —— 移除對象的指定屬性。
save(object) —— 將對象數據存儲到一個 userData 存儲區。
setAttribute() —— 設置指定的屬性值。
備注:
從安全方面考慮,一個 userData 存儲區只能用於同一目錄和對同一協議進行存儲。
如果使用 userData behavior 不正確可能會對你的應用造成危害,userData 存儲區中的數據沒有加密因而不安全的。任何可以訪問 UserData 保存磁盤的應用都可以訪問該數據,所以,推薦不要保存敏感的數據,比如信用卡號,詳細:《Security Considerations: DHTML and Default Behaviors》
userData behavior 會跨 session 存儲信息到存儲區,這提供了動態的數據結構和比 cookie(一般 4KB) 更大的容量。userData 存儲區的容量依賴於 domain 的安全域。下表顯示的是 userData 存儲最大容量,對單獨文檔和整個域名的所有文檔都適用,但基於安全域。
Security Zone
Document Limit (KB)
Domain Limit (KB)
Local achine
128
1024
Intranet
512
10240
Trusted Sites
128
1024
Internet
128
1024
Restricted
64
640
如果設置 userData behavior 到 html、head、title 或者 style 對象上,當 save 和 load 方法被調用時會出錯。如果必須設置到 style 中,可以設置內聯或者文檔頭,例如:
<style>
.storeuserData {behavior:url(#default#userData);}
</style>
對於 userData behavior 來說 ID 是可選的,但是如果有,則會改善執行性能。
userData 可以將數據以 XML 格式保存在客戶端計算機上,一般保存在 C(WIN 系統盤):\Documents and Settings\XXX\UserData\ 文件夾下。
userData 數據一直存在,除非人為刪除或者用腳本設置該數據的失效日期(expires)。
大部分翻譯自:《userData Behavior》