安卓微信浏览器location.reload()刷新无效解决方法

场景

页面上有一个按钮,点击的时候执行window.location.reload(),正常情况reload()后会向后台发出请求,但在安卓的微信浏览器中reload后,通过fiddler抓包发现,并没有发送请求。

应该是微信缓存的问题。

安卓微信浏览器location.reload()刷新无效解决方法

解决方法

最常用的方法,更新时间戳:window.location.href+随机数。写了一个小函数,添加或更新链接后的时间戳。这里,第二个参数表示时间戳的key,不传参时,默认变量名为“t”。

function updateUrl(url,key){

  var key= (key || 't') +'=';  //默认是"t"

  var reg=new RegExp(key+'\\d+');  //正则:t=1472286066028

  var timestamp=+new Date();

  if(url.indexOf(key)>-1){ //有时间戳,直接更新

    return url.replace(reg,key+timestamp);

  }else{  //没有时间戳,加上时间戳

    if(url.indexOf('\?')>-1){

      var urlArr=url.split('\?');

      if(urlArr[1]){

        return urlArr[0]+'?'+key+timestamp+'&'+urlArr[1];

      }else{

        return urlArr[0]+'?'+key+timestamp;

      }

    }else{

      if(url.indexOf('#')>-1){

        return url.split('#')[0]+'?'+key+timestamp+location.hash;

      }else{

        return url+'?'+key+timestamp;

      }

    }

  }

}

调用

window.location.href=updateUrl(window.location.href); //不传参,默认是“t”

window.location.href=updateUrl(window.location.href,'v'); //传入自定义的变量名

以上内容转载自:https://segmentfault.com/a/1190000006753455

查看 android 微信的相关文章

转载本站原创文章请注明:文章转自 挨踢路,链接: https://itlu.org/articles/2418.html

已有 8 条评论

  1. 微信浏览器会在页面刷新的时候检查地址是否有变化,如果没有就阻止刷新请求。
    比较有病的浏览器。

    1. 去年做微信公众平台开发的时候,就是遇到各种坑,也包括这文章的坑。

      1. 我这攒了不少,不过都没啥用,都是腾讯挖出来的坑,没什么技术营养

  2. 技术派你好

    1. 银淡派你好

  3. 向技术大师鞠躬

    1. 鞠躬??怎么感觉是对逝者才会鞠躬似的

      1. 那就给大佬倒茶!

添加新评论

您好,#请填信息#修改