如何从JavaScript中更改页面

我有以下代码,从JavaScript内更改页面:

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

但是它不会更改顶部的URL,所以当有人点击后退button时,它不会返回到上一页。

如何让JavaScript更改顶级url,以便浏览器后退button有效。

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

 window.location = newUrl; 

但是,您的新url会导致浏览器加载新页面,但听起来您希望在不离开当前页面的情况下修改url。 你有两个select:

  1. 使用url哈希。 例如,您可以从example.comexample.com#foo而不加载新页面。 你可以简单的设置window.location.hash来简化这个过程。 然后,您应该听取HTML5 hashchange事件,当用户按下后退button时将会触发该事件。 旧版本的IE不支持此function,但请查看jQuery BBQ ,它可以在所有浏览器中使用。

  2. 您可以使用HTML5 History来修改path,而无需重新加载页面。 这将允许您从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 4testing版。

嗯,我会用

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

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

如果你只是想更新相对path,你也可以做

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

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