如何更改当前 URL?

IT技术 javascript
2021-03-20 21:58:24

我有以下代码可以从 JavaScript 中更改页面:

var newUrl = [some code to build up URL string];
window.location.replace(newUrl);

但它不会更改顶部 URL,因此当有人单击后退按钮时,它不会返回上一页。

我如何让 JavaScript 更改顶部 URL,以便浏览器后退按钮起作用。

6个回答

简单地分配给window.locationwindow.location.href应该没问题:

window.location = newUrl;

但是,您的新 URL 会导致浏览器加载新页面,但听起来您希望在不离开当前页面的情况下修改 URL。为此,您有两种选择:

  1. 使用 URL 哈希。例如,您可以example.comexample.com#foo不加载新页面的情况下您可以简单地设置window.location.hash简化此操作。然后,您应该监听 HTML5hashchange事件,该事件将在用户按下后退按钮时触发。这在旧版本的 IE 中不受支持,但请查看jQuery BBQ,它可以在所有浏览器中使用。

  2. 您可以使用 HTML5 History 修改路径而无需重新加载页面。这将允许您从 更改example.com/fooexample.com/bar使用它很容易:

    window.history.pushState("example.com/foo");

    当用户按下“返回”时,您将收到窗口的popstate事件,您可以轻松地收听(jQuery):

    $(window).bind("popstate", function(e) { alert("location changed"); });

    不幸的是,这仅在非常现代的浏览器中受支持,例如 Chrome、Safari 和 Firefox 4 beta。

回顾过去,这是迄今为止最好的答案。document.location.href 在 pushState 上没有任何内容
2021-04-24 21:58:24
感谢您的更正,我会相应地更新我的答案。
2021-04-28 21:58:24
字符串上的 .replace 方法不会改变它应用到的字符串,它会生成一个新的字符串。” - 该window.location.replace()方法与String.prototype.replace()方法不同,因为window.location它不是字符串(它是一个对象)。 window.location.replace()替换当前使用新的 URL,同时覆盖历史记录中的旧 URL 条目。
2021-05-07 21:58:24

如果您只想更新相对路径,您也可以这样做

window.location.pathname = '/relative-link'

"http://domain.com" -> "http://domain.com/relative-link"

嗯,我会用

window.location = 'http://localhost/index.html#?options=go_here';

我不确定这是否是你的意思。

<script> 
    var url= "http://www.google.com"; 
    window.location = url; 
</script>