重定向并重新加载,即使是同一页

3
什么是确保页面重定向到另一个页面并确保即使目标页面是当前页面也刷新页面的最简单/最好的方法?
我在网站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();

1
location.reload(true);,以便不提供缓存页面。 - Hemal
能否简单地调用 window.location.replace(www.website.com/#tag); 然后再调用 location.reload(true); 或者在 replace 事件之后函数就停止运行了? - COMisHARD
这可能也会有所帮助,https://dev59.com/zm435IYBdhLWcg3wpxyx#7632005 - Hemal
使用replace函数后,网页将重新加载,之后的任何操作都将停止执行。 - Hemal
好的,那么我怎么才能同时得到这两种效果呢? - COMisHARD
4个回答

2
这种方法使用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();
}

0

有一种情况是,导航到当前位置但使用新的或更改的#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在必要时提供。


0
尝试这样做:您可以将哈希值附加到其中,然后重新加载:
 if(window.location.href.indexOf("#tag") == -1){
    window.location.href += "#tag";
    location.reload(true);
    }

0

尝试在同一页上进行重定向。

window.location.reload(true)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接