现在我知道在不更改页面的情况下更改位置栏的内容是不可能的(并且我不是在谈论#)。我最近注意到了github.com。他们如何在他们的网站上这样做?当用户点击浏览器的后面或下一个按钮时,他们可以轻松获得一个事件。 dojo.back也有这个功能。但是如何在不离开页面的情况下使用javascript更改地址栏?
答案 0 :(得分:3)
有两种方法:
pushState()
功能。例如,Facebook和Github使用它。它允许您在历史状态更改时修改完整的URL并触发事件处理程序。 Mozilla有good overview。window.location.hash
,监视更改,并根据该哈希值加载相应的内容。但是,这意味着当用户请求时,例如http://twitter.com/#!/27c3/status/18331752900591616,只有通过Web服务器请求哈希符号之前的部分,哈希之后的所有内容仅客户端的业务。这意味着服务器还无法决定将哪些内容传递给客户端。答案 1 :(得分:2)
答案 2 :(得分:1)
你在GitHub上所指的是#(hash)。当您右键单击行号时,它会将数字添加到您的哈希值。
window.location.hash = 'HELLO';
将其放入页面中进行试用。如果没有页面重新加载,则无法更改window.location
。后退按钮的东西有点棘手,但Dojo是你最好的选择。 jQuery没有提供这个。 Dojo的代码非常简洁,因此您应该能够对其功能进行反向工程(如果您选择将该功能包含在您自己的库中)。
您还会注意到Google正在执行相同的操作:http://code.google.com/p/digitalxero/source/browse/#svn%2Ftrunk%2Flocale%2Fde
如果单击文件夹(左侧),则会更改哈希值,并提供不同的内容。