我正在浏览GitHub.com,我注意到在查看存储库的源代码时,如果单击某个文件,则会滑入源代码并更改URL,但不会显示该页面已刷新。有谁知道这是怎么做的?我已经看到这个用#符号完成,特别是在创建Flash网站时,但是我从未见过这样做,就像GitHub的做法一样,没有#。
这是一个例子: https://github.com/jquery/jquery
点击其中一个文本文件,如.gitattributes,然后点击痕迹中的jQuery,看看我的意思。
答案 0 :(得分:13)
Github使用window.history.replaceState()
Here你可以看到他们是如何做到的
答案 1 :(得分:8)
在Chrome / Webkit浏览器的客户端使用XMLHttpRequest来获取服务器端资源而无需刷新页面,并且动态加载内容,并且可以在附加内容期间挂钩动画。
我不确定为什么只有Chrome是ajax的目标,因为当ajax以相同的方式应用时(例如twitter),哈希标记通常会发生变化。
对于动态更改的网址,我相信所做的一切都是第二个想法,它可能是一些只有chrome支持的新HTML5功能。location.href
更新。
答案 2 :(得分:2)
我发现这篇文章解释了这些HTML5功能 - window.history.pushState(),window.history.replaceState()和onpopstate()事件:http://www.spoiledmilk.dk/blog/?p=1922
正如文章所提到的,Flickr也在几个地方使用这种技术。