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

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


二、解决方法:最常用的方法,更新时间戳: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'); //传入自定义的变量名




四、第二种方法(针对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抓包测试,只有第一次刷新时有效,再次刷新,安卓微信浏览器仍然会缓存,所以还是更改时间戳最有效,这也是解决缓存最常用的方法。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值