确保页面重定向到另一个页面并确保页面刷新(即使目标页面是当前页面)的最简单/最佳方法是什么。
我在 www.website.com 页面上有一些功能,可以将用户重定向到 URL www.website.com/#tag。然后我有一个 onload,甚至可以检查 #tag 的 url,并在该标签存在时执行某些操作。
但是,如果用户已经在 www.website.com/#tag 页面上,程序就会中断。确保用户始终通过此功能重定向到 www.website.com/#tag 的最佳方法是什么,就好像他们是从其他页面新鲜到达网站一样(比如说 www.google.com)。
我目前正在重定向:
window.location.replace(www.website.com/#tag);
我知道有一百万种方法可以重新加载页面。我一直在用:
location.reload();
该方法使用了jQuery,但原理是,读取我们要更新的属性,如果不会发生变化,则重新加载而不是设置属性。
// current value of the location href attribute
let currentURL = $(location).attr("href");
// value we intend to change it to
let redirectURL = "https://yellow.brick.road/"
if (currentURL !== redirectURL) {
$(location).attr("href", redirectURL);
} else {
location.reload();
}
尝试这样的事情:您可以简单地将哈希附加到它然后重新加载:
if(window.location.href.indexOf("#tag") == -1){
window.location.href += "#tag";
location.reload(true);
}
在这种情况下,导航到当前位置但使用新的或更改的
#anchor
可能会导致浏览器不重新加载页面,而是滚动到锚点。 通常,这实际上是所需的行为,因为它支持我们熟悉的简单的基于锚点的链接。
我已经在至少一个应用程序中解决了这个问题,如果底层路径没有改变,同时检查哈希值,则切换到重新加载行为:
var new_path, old_path;
old_path = window.location.origin + window.location.pathname;
window.location.href = location;
new_path = window.location.origin + window.location.pathname;
if (old_path === new_path && window.location.hash.length > 0) {
window.location.reload();
}
我不需要处理查询字符串,但
window.location.search
会在必要时提供。
尝试在同一页面上重定向。
window.location.reload(true)
window.location.reload(true) 为我工作