解决微信浏览器location-reload失效

在实际开发中,除去a标签跳转,经常会使用window.location.href去跳转页面,这个方法在绝大多数浏览器中都不会存在问题,但在一次项目中,发现在安卓微信浏览器中,调用微信SDK分享成功之后调用window.location.reload()刷新本页面,但并没有生效:

window.location.reload();

原因

href是location对象的一个属性,reload()则是location对象的方法
所以对于href,可以为该属性设置新的 URL,使浏览器读取并显示新的 URL 的内容。
对于reload()则是重新加载当前文档,如果该方法没有规定参数,或者参数是 false,它就会用 HTTP 头 If-Modified-Since 来检测服务器上的文档是否已改变。如果文档已改变,reload() 会再次下载该文档。如果文档未改变,则该方法将从缓存中装载文档。这与用户单击浏览器的刷新按钮的效果是完全一样的。如果把该方法的参数设置为 true,那么无论文档的最后修改日期是什么,它都会绕过缓存,从服务器上重新下载该文档。这与用户在单击浏览器的刷新按钮时按住 Shift 健的效果是完全一样。

但对于安卓手机微信中的浏览器,reload只是从缓存中装载文档,所以当你使用该方法,是失效的;

建议少用window.reload(),应该使用window.location.href=""来代替。

解决办法

使用location.href代替reload(),而且在以后的使用中也强烈建议大家使用location.href来进行刷新或者跳转

window.location.href = location.href+'?time='+((new Date()).getTime());
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 人丑就该多看书 文章来自其他博文。 *.location.href 用法: javascript> functio...
    樱花树下_529d阅读 3,051评论 0 0
  • 1.几种基本数据类型?复杂数据类型?值类型和引用数据类型?堆栈数据结构? 基本数据类型:Undefined、Nul...
    极乐君阅读 10,964评论 0 106
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,330评论 25 709
  • Break,Continue,Return的区别在学js的时候,总是分不清break,continue,retur...
    饥人谷_廖珍阅读 9,689评论 0 0
  • 小时候,幸福是父母的一句鼓励,一袋零食,考试的好成绩,一次肆无忌惮的玩耍 长大了,幸福是一份单纯的初恋,一群志同道...
    泽成阅读 981评论 0 0