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.我也需要它用于动态网站.
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)
虽然我觉得 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。如果它在任何主要浏览器上都不起作用,请告诉我。
| 归档时间: |
|
| 查看次数: |
42529 次 |
| 最近记录: |