HTML5本機存放區localStorage、sessionStorage及IE專屬UserData,html5localstorage

來源:互聯網
上載者:User

HTML5本機存放區localStorage、sessionStorage及IE專屬UserData,html5localstorage
HTML5本機存放區localStorage、sessionStorage及IE專屬UserData 

  在用戶端儲存資料用的最普遍的方式非cookie莫屬,隨著HTML5的普及,新的本機存放區方式localStorage和sessionStorage將在標準瀏覽器上大展身手。localStorage和sessionStorage是HTML5的新特性之一,說是新特性,其實微軟公司早在IE8上就已經支援localStorage和sessionStorage這兩個api了,只不過在IE8、9下測試這兩個api時,務必在伺服器環境下測試,在本地環境會報錯。

  一、localStorage是什嗎?

  localStorage用於持久化的本機存放區,除非手動刪除資料,否則資料永不到期。

  二、相比於cookie,localStorage有什麼優點?

  如下表,羅列出了cookie和localStorage的特性

特性 localStorage cookie
容量大小 5M 4k左右
相容性 IE8及以上瀏覽器 基本上所有瀏覽器都相容
到期時間 永不到期 可自訂
是否隨HTTP發送到服務端 否   是(佔用頻寬)
範圍 子網域名稱之間相互獨立 可通過.setDomain設定主網域名稱共用

  localStorage的優點很明顯,容量大、不會佔用頻寬,除此之外,localStorage提供了豐富的方法去設定、讀取、移除資料。
  localStorage.setItem(key,value)  // 設定索引值對
  localStorage.getItem(key)  // 通過索引值讀取對應的值
  localStorage.removeItem(key)  // 通過索引值移除對應的值
  localStorage.clear()  // 初始化localStorage,清除所有索引值對
  localStorage.key(index) // 通過下標index來擷取指定索引的key名

   sessionStorage跟localStorage長的差不多,那他們之間有什麼差別呢?唯一的差別就在於它們儲存資料的持久性上面,localStorage儲存的資料永不到期,sessionStorage儲存的資料在瀏覽器視窗關閉之後就消失了,不關閉瀏覽器視窗只重新整理頁面的話,sessionStorage儲存的資料是依然存在的。它們擁有相同的屬性和方法。

  雖然sessionStorage和localStorage這麼好用,但是IE6、IE7上面不支援,我們可以通過IE專屬的UserData來彌補這個缺陷,UserData是早期IE瀏覽器用來本機存放區資料用的,UserData的資料是以檔案的形式儲存在磁碟上,UserData需要依附於一個HTML標籤來設定、讀取、移除資料,並不是所有HTML標籤都可以,支援的HTML標籤有:

  A, ABBR, ACRONYM, ADDRESS, AREA, B, BIG, BLOCKQUOTE, BUTTON, CAPTION, CENTER, CITE, CODE, DD, DEL, DFN, DIR, DIV, DL, DT, EM, FONT, FORM, hn, HR, I, IMG, INPUT type=button, INPUT type=checkbox, INPUT type=file, INPUT type=hidden, INPUT type=image, INPUT type=password, INPUT type=radio, INPUT type=reset, INPUT type=submit, INPUT type=text, KBD, LABEL, LI, LISTING, MAP, MARQUEE, MENU, OBJECT, OL, OPTION, P, PLAINTEXT, PRE, Q, S, SAMP, SELECT, SMALL, SPAN, STRIKE, STRONG, SUB, SUP, TABLE, TEXTAREA, TT, U, UL, VAR, XMP。

   UserData對資料的大小同樣有一定的限制(從MSDN文檔翻譯過來的,英文水平好的建議看英文文檔):

網站類型 單個檔案大小限制(KB) 單個網域名稱的資料大小限制(KB)
本地機 128 1024
區域網路 512 10240
受信任的網站 128 1024
互連網 128 1024
受限網站 64 640

  從表格上面可以看出,要相容各種情況的話,建議單個UserData檔案大小不超過64KB。

  利用UserData來儲存資料比localStorage麻煩一些,但還是很簡單,過程分為以下幾步:

  1、建立HTML標籤

  2、給HTML標籤添加樣式behavior:url(‘#default#userData’)或者js給HTML對象設定.addBehavior ("#default#userData")

  3 、設定資料到期時間

  4、載入UserData

  5、存入資料/讀取資料/刪除資料

  6、儲存資料到儲存區

  看代碼更容易理解(特別注意:以下代碼請在body標籤內部調用,在head標籤內的script裡調用提示沒有許可權,原因未知):

<script type="text/javascript">    var UserData = {        userData: null,        name: document.location.hostname,        init: function() {            if (!this.userData) {                try {                    this.userData = document.createElement("INPUT");                    this.userData.type = "hidden";                    this.userData.style.display = "none";                    this.userData.addBehavior("#default#userData");                    document.body.appendChild(this.userData);                    var expires = new Date();                    expires.setDate(expires.getDate() + 365);                    this.userData.expires = expires.toUTCString();                } catch (e) {                    return false;                }            }            return true;        },        setItem: function(key, value) {            if (this.init()) {                this.userData.load(this.name);                this.userData.setAttribute(key, value);                this.userData.save(this.name);            }        },        getItem: function(key) {            if (this.init()) {                this.userData.load(this.name);                return this.userData.getAttribute(key)            }        },        remove: function(key) {            if (this.init()) {                this.userData.load(this.name);                this.userData.removeAttribute(key);                this.userData.save(this.name);            }        }    };</script>

  總結:在IE6、IE7市場份額逐漸下降的情況下,localStorage和sessionStorage將會應用的越來越廣泛,cookie除了在某些必要的情況下,完全可以用localStorage替代,當然,不建議在localStorage裡面儲存敏感性資料,因為localStorage可以隨時讀取修改或刪除。

  參考文檔:http://www.css88.com/archives/3717

By:王美建 from:http://www.cnblogs.com/wangmeijian/p/4518606.html 轉載請保留署名和出處!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.