Javascript:如何使用锚标记真正重新加载网站?

aef*_*fxx 29 javascript url anchor reload

以此代码段为例:

window.location.href = 'mysite.htm#images';
Run Code Online (Sandbox Code Playgroud)

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

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

PS:我试过了位置的其他方法,但没有一个能做到这一点:(

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

ale*_*rus 56

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


And*_*y E 10

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

// Use a timestamp to make sure the page is always reloaded
window.location.href = 'mysite.htm?r='+(+new Date())+'#images';
Run Code Online (Sandbox Code Playgroud)


ZZY*_*ZZY 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);
Run Code Online (Sandbox Code Playgroud)

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

var redirectToURL = 'http://stackoverflow.com';
window.location.href = redirectToURL;
window.location.reload(true);
Run Code Online (Sandbox Code Playgroud)

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

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

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