即使页面相同也重定向并重新加载

问题描述 投票:0回答:5

确保页面重定向到另一个页面并确保页面刷新(即使目标页面是当前页面)的最简单/最佳方法是什么。

我在 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();
javascript jquery http-redirect reload
5个回答
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
投票

尝试这样的事情:您可以简单地将哈希附加到它然后重新加载:

 if(window.location.href.indexOf("#tag") == -1){
    window.location.href += "#tag";
    location.reload(true);
    }

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
投票

尝试在同一页面上重定向。

window.location.reload(true)

0
投票

window.location.reload(true) 为我工作

© www.soinside.com 2019 - 2024. All rights reserved.