Localstorage本地存儲兼容函數

前言
HTML5提供了本地存儲的API:localstorage對象和sessionStorage對象,實現將數據存儲到用戶的電腦上。Web存儲易於使用、支持大容量(但非無限量)數據同時存儲,同時兼容當前全部主流瀏覽器,但不兼容早期瀏覽器。
存儲API
localStorage和sessionStorage一般被當作普通的JavaScript對象使用:經過設置屬性來存儲字符串值,查詢該屬性來讀取該值。除此以外,這兩個對象還提供了更加正式的API。
調用setItem()方法,將對應的名字和值傳遞出去,能夠實現數據存儲
調用getItem()方法,將名字傳遞出去,能夠獲取對應的值
調用removeItem()方法,名稱做爲參數,能夠刪除對應的數據
調用clear()方法,能夠刪除全部存儲的數據
使用length屬性以及key()方法,傳入0~length-1的數字,能夠枚舉全部存儲數據的名字瀏覽器

 1 localStorage.setItem("name", "xuanfeng");    // 以"name"爲名字存儲一個字符串
 2 localStorage.getItem("name");    // 獲取"name"的值
 3 
 4 // 枚舉全部存儲的名字/值對
 5 for(var i=0; i<localStorage.length; i++){    // length表示全部的名值對總數
 6 var name = localStorage.key(i);    // 獲取第i對的名字
 7 var value = localStorage.getItem(name);    // 獲取該對的值
 8 }
 9 
10 localStorage.removeItem("name");    // 刪除"name"項
11 localAStorage.clear();    // 所有刪除

IE User Data
微軟在IE5及以後的IE瀏覽器中實現了它專屬的客戶端存儲機制——「userData」。
userData能夠實現必定量的字符串數據存儲,對於IE8之前的IE瀏覽器中,能夠將其用做是Web存儲的替代方案。session

iLocalStorage插件
因爲IE8如下瀏覽器的本地存儲API不同,因此就寫了個插件兼容各大瀏覽器存儲。提供的方法及用法以下:app

1 getItem: 獲取屬性
2 setItem: 設置屬性
3 removeItem: 刪除屬性
4 iLocalStorage.setItem('key', 'value');
5 console.log(iLocalStorage.getItem('key'));
6 iLocalStorage.removeItem('key');

插件代碼
/*
* 名稱:本地存儲函數
* 功能:兼容各大瀏覽器存儲
* 做者:軒楓
* 日期:2015/06/11
* 版本:V2.0
*/函數

/**
* LocalStorage 本地存儲兼容函數
* getItem: 獲取屬性
* setItem: 設置屬性
* removeItem: 刪除屬性
*
*
* @example
*
iLocalStorage.setItem('key', 'value');
console.log(iLocalStorage.getItem('key'));
iLocalStorage.removeItem('key');
*
*/
spa

 1 (function(window, document){
 2 
 3 // 1. IE7下的UserData對象
 4 var UserData = {
 5 userData: null,
 6 name: location.href,
 7 init: function(){
 8 // IE7下的初始化
 9 if(!UserData.userData){
10 try{
11 UserData.userData = document.createElement("INPUT");
12 UserData.userData.type = "hidden";
13 UserData.userData.style.display = "none";
14 UserData.userData.addBehavior("#default#userData");
15 document.body.appendChild(UserData.userData);
16 var expires = new Date();
17 expires.setDate(expires.getDate() + 365);
18 UserData.userData.expires = expires.toUTCString();
19 } catch(e){
20 return false;
21 }
22 }
23 return true;
24 },
25 setItem: function(key, value){
26 if(UserData.init()){
27 UserData.userData.load(UserData.name);
28 UserData.userData.setAttribute(key, value);
29 UserData.userData.save(UserData.name);
30 }
31 },
32 getItem: function(key){
33 if(UserData.init()){
34 UserData.userData.load(UserData.name);
35 return UserData.userData.getAttribute(key);
36 }
37 },
38 removeItem: function(key){
39 if(UserData.init()){
40 UserData.userData.load(UserData.name);
41 UserData.userData.removeAttribute(key);
42 UserData.userData.save(UserData.name);
43 }
44 }
45 };
46 
47 // 2. 兼容只支持globalStorage的瀏覽器
48 // 使用: var storage = getLocalStorage();
49 function getLocalStorage(){
50 if(typeof localStorage == "object"){
51 return localStorage;
52 } else if(typeof globalStorage == "object"){
53 return globalStorage[location.href];
54 } else if(typeof userData == "object"){
55 return globalStorage[location.href];
56 } else{
57 throw new Error("不支持本地存儲");
58 }
59 }
60 var storage = getLocalStorage();
61 function iLocalStorage(){
62 
63 }
64 // 高級瀏覽器的LocalStorage對象
65 iLocalStorage.prototype = {
66 setItem: function(key, value){
67 if(!window.localStorage){
68 UserData.setItem(key, value);
69 }else{
70 storage.setItem(key, value);
71 }
72 },
73 getItem: function(key){
74 if(!window.localStorage){
75 return UserData.getItem(key);
76 }else{
77 return storage.getItem(key);
78 }
79 },
80 removeItem: function(key){
81 if(!window.localStorage){
82 UserData.removeItem(key);
83 }else{
84 storage.removeItem(key);
85 }
86 }
87 }
88 if (typeof module == 'object') {
89 module.exports = new iLocalStorage();
90 }else {
91 window.iLocalStorage = new iLocalStorage();
92 }
93 
94 })(window, document);
相關文章
相關標籤/搜索