重写 document.location 而不加载
我正在开发一个 100% ajax 的系统,当然第一个请求除外。
我有兴趣使用 javascript 更改 document.location 中的地址。 但我不希望浏览器在该“新”位置加载页面。
有谁知道我该怎么做?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
要重写整个位置而不仅仅是“哈希”部分,可以使用浏览器历史记录 API,尽管目前它似乎只是 Gecko 1.9.3/Firefox 4 支持。
To rewrite the entire location and not just the "hash" part, browser history API can be used, although currently it only seems to be supported in Gecko 1.9.3/Firefox 4.
在不导航的情况下更改整个 URL 是不可能的,想象一下它可能产生的安全问题。
您只能更改
location.hash
,它是 URL 中#
符号后面的部分:您的 url 将更改为 http://someurl.com/#foo
Changing the entire URL without navigating is not possible, just imagine the security issues that it could generate.
You can change only the
location.hash
, which is the part of the URL that follows the#
symbol:Your url will change to http://someurl.com/#foo
您可以使用与 Gmail 相同的方法。在 url 末尾附加一个锚点,浏览器不应重新加载页面,但您可以读取
document.location.href
中的信息并对其进行操作。这也将保持后退按钮的功能完整(前提是您的 JavaScript 支持),例如
首页是
http://www.mypage.com/index.php
您单击到下一个“页面” " 使用link
,它会更改为http://www.mypage.com/index.php#page2
You can use the same method that Gmail uses. Append an anchor to the end of the url, the browser should not reload the page but you can read the information in
document.location.href
and act on it. This also will keep the functionality of the back button intact (providing your javascript supports it)for example
first page is
http://www.mypage.com/index.php
you click to the next "page" using<a href="#page2">link</a>
and it changes tohttp://www.mypage.com/index.php#page2