29

以这个代码片段为例:

window.location.href = 'mysite.htm#images';

已经在网站上mysite.htm并通过触发重新加载location.href不会重新加载页面,而是跳转到 URL 中命名的锚点。

我需要一种机制来真正重新加载页面。有任何想法吗?

PS:我尝试了 location 的其他方法,但都没有成功:(

编辑
不要挂在文件类型上htm。我也需要它用于动态网站。

4

7 回答 7

57

将指定的 URL 设置为位置后,发出window.location.reload(true). 这将强制浏览器重新加载页面。

于 2010-02-23T14:55:41.583 回答
10

使用 URL 的查询部分添加随机字符串:

// Use a timestamp to make sure the page is always reloaded
window.location.href = 'mysite.htm?r='+(+new Date())+'#images';
于 2010-02-23T14:53:10.310 回答
5

虽然我觉得 alemjerus 的答案是好的方向,但当新 URL 指向不同的页面时它不起作用,至少在我的 Chrome v40 上。

例如,当新 URL 只添加一个锚点时,它可以正常工作:

var redirectToURL = '/questions/2319004/javascript-how-to-truly-reload-a-site-with-an-anchor-tag#answer-28621360';
window.location.href = redirectToURL;
window.location.reload(true);

但是当它指向不同的页面时,用户在重新加载后仍然会停留在当前页面上。(批量运行以下代码,location.href=和之间没有延迟location.reload):

var redirectToURL = 'http://stackoverflow.com';
window.location.href = redirectToURL;
window.location.reload(true);

在这种情况下,请移除location.reload作品。所以我的解决方法是检查新 URL 是否在同一页面上:

var urlParser = document.createElement('a');
urlParser.href = redirectToURL;
if (urlParser.origin + urlParser.pathname === location.origin + location.pathname) {
    window.location.reload(true);
}

在 Chrome 和 Safari 上测试过,没有尝试过 IE。如果它不适用于任何主要浏览器,请告诉我。

于 2015-02-20T03:54:49.340 回答
3

您可能是骗子并附加一个随机查询字符串,重定向到“mysite.htm?random=289954034#images”。

但是,如果这是一个静态页面,正如.htm暗示的那样,您需要重新加载什么?如果您的 onload Javascript 可以再次发生,那么您可能只需要更改应用程序的流程。

于 2010-02-23T14:52:40.830 回答
2

我发现@alemjerus 的回答会重新触发 aPOST如果那是最后一个请求:

window.location.reload(true)

我想要的是使用 a 从头刷新页面GET,所以我使用了这个解决方案

<a href="javascript:window.location.href=window.location.href">Refresh page</a>
于 2021-01-14T09:20:53.233 回答
1

试试这个: window.location.href = 'mysite.htm?';

编辑:这只会在第一次工作;之后,缓存再次生效。

于 2010-02-23T14:53:31.860 回答
-2

适用于大多数 Mozilla 浏览器

<a title="Reset this Document" href="javascript:void()" onclick="window.location.href='#'"><font color="red">Reset</font></a>

代码行:

window.location.href='#'
or window.location.href=''

最后的代码在 IE 下无法正常工作

于 2015-08-02T20:02:24.953 回答