Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 重定向和重新加载,即使相同的页面_Javascript_Jquery_Redirect_Reload - Fatal编程技术网

Javascript 重定向和重新加载,即使相同的页面

Javascript 重定向和重新加载,即使相同的页面,javascript,jquery,redirect,reload,Javascript,Jquery,Redirect,Reload,确保一个页面重定向到另一个页面并确保即使目标页面是当前页面,该页面也会刷新的最简单/最佳方法是什么 我在www.website.com页面上有一些功能,可以将用户重定向到URL www.website.com/#标记。然后,我有一个onload,它甚至可以检查url中的#标记,如果该标记存在,则会执行一些操作 但是,如果用户已经在www.website.com/#tag页面上,程序就会中断。确保用户始终通过此功能重定向到www.website.com/#tag的最佳方法是什么,就好像他们刚从其他

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

我在www.website.com页面上有一些功能,可以将用户重定向到URL www.website.com/#标记。然后,我有一个onload,它甚至可以检查url中的#标记,如果该标记存在,则会执行一些操作

但是,如果用户已经在www.website.com/#tag页面上,程序就会中断。确保用户始终通过此功能重定向到www.website.com/#tag的最佳方法是什么,就好像他们刚从其他页面(比如www.google.com)到达网站一样

我当前正在使用以下内容重定向:

window.location.replace(www.website.com/#tag);
我知道有一百万种方法可以重新加载页面。我一直在使用:

location.reload();

尝试以下方法:只需将哈希附加到它,然后重新加载:

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

在这种情况下,导航到当前位置但使用新的或更改的
#锚定
可能会导致浏览器不重新加载页面,而是滚动到锚定点。通常,这实际上是我们想要的行为,因为它支持我们熟悉的基于锚的简单链接

我已经在至少一个应用程序中解决了这个问题,如果基础路径没有改变,我会切换到重新加载行为,同时检查哈希:

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
会在必要时提供该功能。

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

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

window.location.reload(true)

location.reload(真),这样缓存的页面就不会被传递。是否可以简单地调用window.location.replace(www.website.com/#tag);然后调用location.reload(true);或者函数在替换事件后停止运行?这可能也会有所帮助,一旦使用替换,页面将重新加载,之后将不会执行任何操作。好的,那么如何获得这两种效果呢?