本文针对安卓微信浏览器中window.location.reload()刷新页面后请求仍返回初始数据的问题,提出使用window.location.href拼接随机数替代reload()的方法。同时提供通过userAgent判断微信浏览器的代码,确保仅在微信环境下执行该逻辑,有效解决请求缓存导致的刷新失效现象。
微信浏览器刷新页面失效问题
场景如下:页面初始化时发起一个ajax请求,页面上有一个按钮,点击时执行window.location.reload()。正常情况下,reload()后页面会再次向后台发送请求,但在安卓微信浏览器中,reload()后请求的始终是第一次打开页面时的数据。这看起来像是请求被缓存了,但未经过实测验证,无法确定是否确为缓存机制导致。
使用随机数替代reload()的方法
解决方法是使用window.location.href="window.location.href+随机数"来替代window.location.reload()。注意,必须添加随机数,否则该方法无效。也可以使用a标签,设置其href属性为"window.location.href + 随机数"。
判断微信浏览器的实现
若需仅针对微信浏览器应用此逻辑,需先判断当前是否为微信内置浏览器。可通过window.navigator.userAgent进行判断,例如返回Mozilla/5.0 (iPhone; CPU iPhone OS 9_3_2 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Mobile/13F69 MicroMessenger/6.3.16。根据关键字MicroMessenger判断是否为微信浏览器。判断函数如下
微信浏览器判断函数代码
function isWeiXin(){
var ua = window.navigator.userAgent.toLowerCase();
if(ua.match(/MicroMessenger/i) == 'micromessenger'){
return true;
}else{
return false;
}
}
总结
以上就是本文的全部内容,了解更多JavaScript的语法,大家可以查看:《JavaScript 参考教程》、《JavaScript代码风格指南》,也希望大家多多支持本站。