我们都知道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=/"; //转码并赋值 }