微信浏览器后退刷新的解决方案

1.场景:安卓手机通过微信浏览器签名,阅读pdf后(跳转到新的页面),点击回退,之前的页面被刷新,导致阅读状态消失。
解决方法:将阅读后的文件缓存到sessionStorage中,回退之后,将数据取出,在页面上还原原来的阅读状态。
知识点:sessionStorage用法:setItem(),getItem(),removeItem()。
var storage = window.sessionStorage;
storage.setItem(readAlready, “red”);
storage.getItem(readAlready);
遍历sessionStorage
var sessionKeys = Object.keys(sessionStorage)
for (var i=0;i console.log(sessionKeys[i]+"="+sessionStorage.getItem(sessionKeys[i]))
}

2.场景:安卓手机,微信浏览器中,签名之后,数据不能回显,解决方案,签名返回之后强制刷新
原理:利用history的replaceState,替换原来的url历史记录,可以在签完名,返回后调用下面的方法,url变化,浏览器去请求服务器,实现页面刷新。
function replaceHistoryState(){
var url = document.location.href;
var time = new Date().getTime();
var newUrl = replaceParamVal(“time”,time);
console.log(“newUrl:”+newUrl);
window.history.replaceState({page: 3}, “title2”, newUrl);
}
//替换指定传入参数的值,paramName为参数,replaceWith为新值
function replaceParamVal(paramName,replaceWith) {
var oUrl = document.location.href;
if(oUrl.indexOf(“time=”)<=-1){
oUrl=oUrl+"&time=1";
}
//console.log(“oUrl:”+oUrl);
var re=eval(’/(’+ paramName+’=)([^&]*)/gi’);
//console.log(“re:”+re);
var nUrl = oUrl.replace(re,paramName+’=’+replaceWith);
return nUrl;
}

你可能感兴趣的:(微信浏览器后退刷新的解决方案)