微信内置浏览器 location.reload() 无效

chen · 2017.12.1

问题

使用window.location.reload()刷新当前页面,其它浏览器中正常刷新。微信内置浏览器无法刷新

原因

执行window.location.reload(),正常情况reload()后会向后台发出请求,但在安卓的微信浏览器中reload后,通过fiddler抓包发现,并没有发送请求。可能是微信缓存的问题。

解决办法

  1. 判断是否是微信浏览器
  2. 微信浏览器中给请求添加时间戳,向服务器重新获取资源

使用

window.location.href = window.location.href+'?time='+((new Date()).getTime())

代替

window.location.reload()

完整代码

let ua = window.navigator.userAgent.toLowerCase()
// 判断微信浏览器
if(ua.match(/MicroMessenger/i) == 'micromessenger'){
    // 添加时间戳,解决微信内置浏览器 reload 刷新失效的问题
    window.location.href = window.location.href+'?time='+((new Date()).getTime())
}else{
    window.location.reload()
}