window.location.reload()从哪里获取它的值?

时间:2015-09-03 06:59:00

标签: javascript html html5

尝试在没有片段标识符(即散列符号#)的情况下重新加载当前页面,并使用以下代码来正常运行:

var path = window.location.href.replace(/(\#.*)/,'');
window.location = path;

我也知道上面的第二行可以读window.location.href = path;,这将我带到下一部分。

在达到上述代码之前,我们尝试了:

var path = window.location.href.replace(/(\#.*)/,'');
window.location.href = path;
window.location.reload();

然而,这对我们不起作用,因为href值似乎没有设置,我觉得reload()之前或之前正在调用href = path位。 / p>

这让我很好奇,reload()的{​​{1}}函数从哪里获取其值以重新加载页面?

如果我点击在片段标识符(可能是目录)之间跳转的页面,则地址栏会相应地更新,并且在调用时,window.location将使用正确的片段进行更新。然而,如果我在地址栏中手动输入内容然后调用window.location.reload()函数,它将不会加载我的手动输入,而是加载最后一个“计算机定义”值。

我的猜测是用户代理(在这种特殊情况下,Chrome 44)正在侦听和更新每次与DOM或窗口内交互的值。我查看了HTML5 specMDN Location.reload()文档以获取相关信息,要么它不存在,要么我太密集了,无法找到/理解它。

有人可以向我解释reload()获取它的价值以及如何通过用户与网页互动来更新它吗?

在此方案中使用reload()window.location = path之间的确切区别是什么?

2 个答案:

答案 0 :(得分:3)

如果要删除网址的“#”部分,则必须明确设置:

window.location.hash = ""

然后调用window.location.reload()。

window.location = path只不过是window.location.href = path的语法糖。

答案 1 :(得分:2)

位置(值)仅在成功导航后更改!换句话说,location实例表示当前加载的页面(包括片段)。

window.location.href(重新)分配新值会加载页面。

因此,当您致电window.location.href = path;时,浏览器想要加载新网址(没有#的网址)。但是,如果你立即拨打window.location.reload();,就像说“不,等等!重新加载当前页面(带#的那个)”。