【发布时间】:2011-04-20 07:16:16
【问题描述】:
我有以下代码可以从 JavaScript 中更改页面:
var newUrl = [some code to build up URL string];
window.location.replace(newUrl);
但它不会更改顶部 URL,因此当有人单击后退按钮时,它不会返回上一页。
如何让 JavaScript 也更改顶部 URL,以便浏览器后退按钮起作用。
【问题讨论】:
标签: javascript
我有以下代码可以从 JavaScript 中更改页面:
var newUrl = [some code to build up URL string];
window.location.replace(newUrl);
但它不会更改顶部 URL,因此当有人单击后退按钮时,它不会返回上一页。
如何让 JavaScript 也更改顶部 URL,以便浏览器后退按钮起作用。
【问题讨论】:
标签: javascript
document.location.href = newUrl;
https://developer.mozilla.org/en-US/docs/Web/API/document.location
【讨论】:
简单地分配给window.location 或window.location.href 应该没问题:
window.location = newUrl;
但是,您的新 URL 会导致浏览器加载新页面,但听起来您想在不离开当前页面的情况下修改 URL。您有两种选择:
使用 URL 哈希。例如,您可以从example.com 转到example.com#foo,而无需加载新页面。您可以简单地设置window.location.hash 来简化此操作。然后,您应该监听 HTML5 hashchange 事件,该事件将在用户按下后退按钮时触发。旧版本的 IE 不支持此功能,但请查看 jQuery BBQ,它可以在所有浏览器中使用。
您可以使用 HTML5 History 修改路径而无需重新加载页面。这将允许您从example.com/foo 更改为example.com/bar。使用它很容易:
window.history.pushState("example.com/foo");
当用户按下“返回”时,您将收到窗口的popstate 事件,您可以轻松收听(jQuery):
$(window).bind("popstate", function(e) { alert("location changed"); });
不幸的是,这仅在非常现代的浏览器中受支持,例如 Chrome、Safari 和 Firefox 4 beta。
【讨论】:
window.location.replace() 方法不一样作为String.prototype.replace() 方法,因为window.location 不是字符串(它是一个对象)。window.location.replace() 用新的 URL 替换当前 URL,同时覆盖历史中旧 URL 的条目。
如果你只是想更新相对路径,你也可以这样做
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>
【讨论】:
这样就可以了:
window.history.pushState(null,null,'https://www.google.com');
【讨论】: