重写document.location而不加载

时间:2010-05-29 23:19:29

标签: javascript url location object-address

我正在开发一个100%ajax的系统,当然除了第一个请求。

我有兴趣使用javascript更改document.location中的地址。 但我不希望浏览器在该“新”位置加载页面。

有谁知道我该怎么做?

3 个答案:

答案 0 :(得分:8)

无法在不导航的情况下更改整个网址,只需想象它可以生成的security issues

您只能更改location.hash,这是#符号后面的网址的一部分:

location.hash = "foo";

您的网址将更改为http://someurl.com/#foo

答案 1 :(得分:6)

要重写整个位置而不仅仅是“哈希”部分,可以使用浏览器历史记录API,尽管目前它似乎只是supported in Gecko 1.9.3/Firefox 4

history.replaceState({}, document.title, url)

答案 2 :(得分:1)

您可以使用Gmail使用的相同方法。在网址末尾附加一个锚点,浏览器不应重新加载页面,但您可以阅读document.location.href中的信息并对其进行操作。这也将保持后退按钮的功能完整(提供您的javascript支持)

例如

第一页是http://www.mypage.com/index.php您使用<a href="#page2">link</a>点击进入下一个“页面”并更改为http://www.mypage.com/index.php#page2