1 function setLocalStorage(key, value) { 2 var curtime = new Date().getTime(); // 獲取當前時間 ,轉換成JSON字符串序列 3 var valueDate = JSON.stringify({ 4 val: value, 5 timer: curtime 6 }); 7 try { 8 localStorage.setItem(key, valueDate); 9 } catch(e) { 10 /*if(e.name === 'QUOTA_EXCEEDED_ERR' || e.name === 'NS_ERROR_DOM_QUOTA_REACHED') { 11 console.log("Error: 本地存儲超過限制"); 12 localStorage.clear(); 13 } else { 14 console.log("Error: 保存到本地存儲失敗"); 15 }*/ 16 // 兼容性寫法 17 if(isQuotaExceeded(e)) { 18 console.log("Error: 本地存儲超過限制"); 19 localStorage.clear(); 20 } else { 21 console.log("Error: 保存到本地存儲失敗"); 22 } 23 } 24 } 25 26 function isQuotaExceeded(e) { 27 var quotaExceeded = false; 28 if(e) { 29 if(e.code) { 30 switch(e.code) { 31 case 22: 32 quotaExceeded = true; 33 break; 34 case 1014: // Firefox 35 if(e.name === 'NS_ERROR_DOM_QUOTA_REACHED') { 36 quotaExceeded = true; 37 } 38 break; 39 } 40 } else if(e.number === -2147024882) { // IE8 41 quotaExceeded = true; 42 } 43 } 44 return quotaExceeded; 45 } 46 47 function getLocalStorage(key) { 48 var exp = 60 * 60 * 24; // 一天的秒數 49 if(localStorage.getItem(key)) { 50 var vals = localStorage.getItem(key); // 獲取本地存儲的值 51 var dataObj = JSON.parse(vals); // 將字符串轉換成JSON對象 52 // 若是(當前時間 - 存儲的元素在建立時候設置的時間) > 過時時間 53 var isTimed = (new Date().getTime() - dataObj.timer) > exp; 54 if(isTimed) { 55 console.log("存儲已過時"); 56 localStorage.removeItem(key); 57 return null; 58 } else { 59 var newValue = dataObj.val; 60 } 61 return newValue; 62 } else { 63 return null; 64 } 65 } 66 67 setLocalStorage('name', 'hello, world'); 68 var localKey = getLocalStorage('name'); 69 console.log(localKey);