Javascript Reload Page

Ala*_*air 44 javascript

为了重新加载页面而没有完全重新加载我正在使用的所有内容:

window.top.location=window.top.location;
Run Code Online (Sandbox Code Playgroud)

但是,当存在锚文本时,由于某种原因,这不起作用.在这种情况下似乎什么都不做,但更有可能刷新锚.

对此进行的任何修复都将重新加载页面(如上所述),而无需重新加载缓存的图像和脚本?

ick*_*fay 74

尝试使用location.reload(false).

正如MDN所说,第二个参数是一个布尔值,表示是否绕过缓存.false根据需要继续使用缓存.

  • 这在理论上是一个很好的答案,但没有解决许多互联网服务提供商存在的问题,它将在浏览器和服务器之间的某处缓存文档.这是HTTP/1.1 RFC 2616的约束下的合法行为,但它导致代码更新需要很长时间才能传播给受影响的互联网服务提供商提供服务的用户.唯一的解决方案是使用服务器到期标头完全禁用缓存,或使用不同的查询字符串,根据RFC 2616,*强制*ISP从服务器检索新的副本. (3认同)
  • @Joseph:如果你试图*绕过缓存,那肯定是一个重要的细节,但问题是如何*不*绕过缓存. (2认同)

Mik*_*uel 6

icktoofay解释了解决方法所以我只是在解决这个问题:

但是,当存在锚文本时,由于某种原因,这不起作用.在这种情况下似乎什么都不做,但更有可能刷新锚.

HTML 5描述了包含赋值的Location接口document.location.

调用assign(url)方法时,UA必须相对于条目脚本的基本URL解析参数,如果成功,则必须将浏览上下文导航到指定的URL.

因此导航操作只能看到一个绝对URL,因此,只分配一个片段与分配与带有片段的页面URL相同的绝对URL没有区别.

导航

8片段标识符:将URL解析器算法应用于新资源的绝对URL和要导航的浏览上下文的活动文档的地址.如果所得到的解析URL的所有组件,忽略任何片段的部件,是相同的,而新的资源是使用要被取出HTTP GET或等同物,和新资源的解析URL具有片段组件不为空(甚至如果它是空的),则导航到该片段标识符并中止这些步骤.

最后,导航到片段标识符

当用户代理需要滚动到片段标识符时,它必须使用滚动元素到CSSOM视图规范中定义的视图算法更改文档的滚动位置,并设置对齐顶部标记,或执行其他一些操作动作,使得文档的指示部分引起用户的注意.