我們都知道window.localStorage是沒有有效期的,除非你手動用window.localStorage.reomoveItem(key)把它刪除,或者你直接清除瀏覽器緩存,否則它將一直存在。有時我們在操作過程中難免會產生一些臨時數據,那么這些臨時數據如何在網頁新打開時,清除掉以前的舊數據呢?
方法是使用cookie作為哨兵,因為cookie默認在你關閉瀏覽器時會自動消失,我們就在網頁打開時判斷有沒有cookie我們就清localStorage緩存,然后再設置一個cookie,這樣你不關閉瀏覽器,cookie一直存在,也就是你的localStorage數據會一直存在。看一個例子:
//初始化應用緩存 (function(){ if(!getCookie('eks_cache_keys')){//每次進入頁面初始化緩存 removeStorageData('currentCity'); removeStorageData('initCities'); removeStorageData('ipCity'); removeStorageData('sendUser'); removeStorageData('receiveUser'); removeStorageData('calculateResult'); removeStorageData('itemWeight'); removeStorageData('currentAdsOpt'); setCookie('eks_cache_keys',true); } })();
/*====================================================== ************ cookie操作 ************ ======================================================*/
//取得cookie function getCookie(name) { var nameEQ = name + "="; var ca = document.cookie.split(';'); //把cookie分割成組 for(var i=0;i < ca.length;i++) { var c = ca[i]; //取得字符串 while (c.charAt(0)==' ') { //判斷一下字符串有沒有前導空格 c = c.substring(1,c.length); //有的話,從第二位開始取 } if (c.indexOf(nameEQ) == 0) { //如果含有我們要的name return unescape(c.substring(nameEQ.length,c.length)); //解碼並截取我們要值 } } return false; } //清除cookie function clearCookie(name) { setCookie(name, "", -1); } //設置cookie function setCookie(name, value, seconds) { seconds = seconds || 0; //seconds有值就直接賦值,沒有為0,這個根php不一樣。 var expires = ""; if (seconds != 0 ) { //設置cookie生存時間 var date = new Date(); date.setTime(date.getTime()+(seconds*1000)); expires = "; expires="+date.toGMTString(); } document.cookie = name+"="+escape(value)+expires+"; path=/"; //轉碼並賦值 }