通过Javascript更新地址栏

通过Javascript更新地址栏,javascript,ajax,browser,dojo,github,Javascript,Ajax,Browser,Dojo,Github,现在我仍然知道,如果不更改页面,就不可能更改位置栏的内容(是的,我不是在说#)。我最近注意到github.com。他们在网站上是如何做到这一点的?当用户点击浏览器的“后退”或“下一步”按钮时,他们可以很容易地获得一个事件。dojo.back也具有此功能。但是如何在不离开页面的情况下用javascript更改地址栏呢?您在GitHub上指的是#(散列)。右键单击行号时,它会将该行号添加到哈希中 window.location.hash = 'HELLO'; 把它放在一页纸上试试看。如果不重新加载

现在我仍然知道,如果不更改页面,就不可能更改位置栏的内容(是的,我不是在说#)。我最近注意到github.com。他们在网站上是如何做到这一点的?当用户点击浏览器的“后退”或“下一步”按钮时,他们可以很容易地获得一个事件。dojo.back也具有此功能。但是如何在不离开页面的情况下用javascript更改地址栏呢?

您在GitHub上指的是#(散列)。右键单击行号时,它会将该行号添加到哈希中

window.location.hash = 'HELLO';
把它放在一页纸上试试看。如果不重新加载页面,则无法更改
窗口位置。后退按钮的东西有点棘手,但Dojo是最好的选择。jQuery不提供这一点。Dojo的代码非常干净,所以您应该能够对其功能进行反向工程(如果您选择将该功能包含到自己的库中)

你还会注意到谷歌也在做同样的事情:


如果您单击文件夹(左),它会更改散列,并提供不同的内容。

您在GitHub上指的是#(散列)。右键单击行号时,它会将该行号添加到哈希中

window.location.hash = 'HELLO';
把它放在一页纸上试试看。如果不重新加载页面,则无法更改
窗口位置。后退按钮的东西有点棘手,但Dojo是最好的选择。jQuery不提供这一点。Dojo的代码非常干净,所以您应该能够对其功能进行反向工程(如果您选择将该功能包含到自己的库中)

你还会注意到谷歌也在做同样的事情:

如果您单击文件夹(左),它会更改散列,并提供不同的内容。

试试看。

试试看有两种方法:

  • HTML5的功能。例如,Facebook和Github就是这样使用的。它允许您修改完整的URL,并在历史记录状态更改时触发事件处理程序。Mozilla有一个
  • 旧的变体是使用URL的散列部分(Twitter就是这样做的)。这意味着您要更改
    window.location.hash
    ,监视它的更改,并根据该hash的值加载适当的内容。然而,这意味着当用户请求时,比如说,仅从Web服务器请求哈希符号之前的部分,哈希之后的所有内容都只是客户机的业务。这意味着服务器还不能决定将哪些内容交给客户端
  • 有两种方法:

    • HTML5的功能。例如,Facebook和Github就是这样使用的。它允许您修改完整的URL,并在历史记录状态更改时触发事件处理程序。Mozilla有一个
    • 旧的变体是使用URL的散列部分(Twitter就是这样做的)。这意味着您要更改
      window.location.hash
      ,监视它的更改,并根据该hash的值加载适当的内容。然而,这意味着当用户请求时,比如说,仅从Web服务器请求哈希符号之前的部分,哈希之后的所有内容都只是客户机的业务。这意味着服务器还不能决定将哪些内容交给客户端

    在github上没有看到(散列)。这就是为什么我想知道。当我点击某个文件夹时,我看到完整的URL更改“没有”#。@user-你能提供一个URL吗。如果我能看到这个页面,我可能会帮上更多的忙。不,在github上,我看不到(散列)。这就是为什么我想知道。当我点击某个文件夹时,我看到完整的URL更改“没有”#。@user-你能提供一个URL吗。如果我能看到这一页,我也许能帮上更多的忙。