如何讓window.localStorage在關閉瀏覽器時清除數據緩存


我們都知道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=/";   //轉碼並賦值    
} 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM