Android微信浏览器Location.reLoad()无效的解决方案

3 篇文章 0 订阅
1 篇文章 0 订阅

场景

页面上有个按钮点击之后需要刷新当前页面,在使用了Location.reLoad()之后无效。

解决方法

更新时间戳:window.location.href+随机数
js如下:

function updateUrl(url,key){
        var key= (key || 't') +'=';  //默认key是"t",可以传入key自定义
        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,'ts'); //传入自定义的变量名

亲测有效

针对PHP的情况

还想过一个方法,这里是针对php的情况,就是将location.href指向一个新的链接,在新链接中再重定向本页面。
假设原页面链接是://xxx.xxx.com/xxx/index?fsid=1001039610100510,则location.href等于如下:

 var url=location.href;
 location.href='//xxx.xxx.com/xxx/update?curl='+encodeURIComponent(url);

在PHP中,function update()处理如下:

function again(){
    $url=$this->input->get('curl');
    header("Location: ".$url);
}    

然而经fiddler抓包测试,只有第一次刷新时有效,再次刷新,安卓微信浏览器仍然会缓存。 所以,还是更改时间戳最有效,这也是解决缓存最常用的方法。
摘自:这里

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值