如何让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