window.location.href=window.location.href 和 window.location.reload() 的区别

IT技术 javascript
2021-01-13 01:14:12

JavaScript 的有什么区别

window.location.href = window.location.href

window.location.reload()

职能?

6个回答

如果我没记错的话,window.location.reload()用 POST 数据重新加载当前页面,window.location.href=window.location.href而不包括 POST 数据。

正如@W3Max 在下面的评论中所指出的,window.location.href=window.location.href如果 URL 中有锚点 (#) 则不会重新加载页面 -window.location.reload()在这种情况下,您必须使用

此外,正如下面@Mic 所指出的,window.location.reload()需要一个额外的参数,skipCache以便使用window.location.reload(true)浏览器将跳过缓存并从服务器重新加载页面。window.location.reload(false)将做相反的事情,并尽可能从缓存加载页面。

@Wimmel,有没有办法禁用此消息?
2021-03-17 01:14:12
请注意,当您在 POST 上使用 window.location.reload() 时,浏览器会询问您是否要重新发送数据以重新加载页面
2021-03-22 01:14:12
另请注意,location.reload() 还将强制重新加载所有静态内容(很像 ctrl+f5 样式的硬刷新),而将 location.href 设置回 href(或路径名或 URL)则不会,这可能很重要(并且不必要的)某些页面上的加载时间差异。
2021-03-29 01:14:12
@Wimmel Chrome:使用 GET Firefox 重新加载页面:重新执行先前的请求,这意味着如果它是一个 POST,您将收到一个漂亮的弹出窗口,询问您是否重新发送数据
2021-04-06 01:14:12
如果 URL 中有锚点 (#),window.location.href=window.location.href 将不会重新加载页面 - 在这种情况下,您必须使用 window.location.reload()。
2021-04-07 01:14:12

如果您说window.location.reload(true)浏览器将跳过缓存并从服务器重新加载页面。window.location.reload(false)会做相反的事情。

注:default为值window.location.reload()ISfalse

Google Chrome 32,在使用 webRTC 时,true/false 对我不起作用。我有一个带有 webRTC 的 iframe,并且只使用window.location.href = window.location.href了技巧。
2021-03-19 01:14:12
如果您对页面上的表单进行了更改,则更改可能会消失(恢复为缓存值),具体取决于使用location.reload()时的浏览器location.reload(false)要完全刷新页面,请使用location.reload(true).
2021-03-26 01:14:12
@Ismail - 默认值为 false。
2021-03-27 01:14:12

不同之处在于

window.location = document.URL;

如果 URL 中有哈希 (#)(后面有或没有),则不会重新加载页面,而

window.location.reload();

将重新加载页面。

并非所有浏览器都存在结束 hases 的问题。如果您担心结束哈希,请尝试: window.location = document.URL.replace(/#$/, '');
2021-03-17 01:14:12
您也可以使用 window.location.pathname 而不是编写这样的正则表达式。例如:window.location.replace(window.location.pathname);
2021-03-30 01:14:12
至少 Chrome 是关注的。我曾经认为这location.href = location.href是理所当然的,但我只是注意到了这种确切的行为并来到 SO 来传播这个词。换用就好了location.reload()
2021-04-08 01:14:12

如果您将布尔值 true 添加到重新加载 window.location.reload(true),它将从服务器加载。

不清楚这个布尔值的支持程度,W3Org提到 NS曾经支持

window.location.href 和document.URL的内容之间可能存在差异- 至少在 location.href 和与重定向有关的非标准和不推荐使用的document.location之间曾经存在差异,但是真的是上个千年。

出于文档目的,我会使用window.location.reload()因为这是您想要做的。

查看stackoverflow.com/a/5091619/429972,因为这解释了差异。
2021-03-17 01:14:12

如上所述,当 url 中有哈希 (#) 时修改 href 不会重新加载页面。因此,我使用它来重新加载它而不是正则表达式:

if (!window.location.hash) {
    window.location.href = window.location.href;
} else {
    window.location.reload();
}