如何重写URL而不刷新,如GitHub.com

时间:2010-12-06 22:44:50

标签: apache mod-rewrite url-rewriting

我正在浏览GitHub.com,我注意到在查看存储库的源代码时,如果单击某个文件,则会滑入源代码并更改URL,但不会显示该页面已刷新。有谁知道这是怎么做的?我已经看到这个用#符号完成,特别是在创建Flash网站时,但是我从未见过这样做,就像GitHub的做法一样,没有#。

这是一个例子: https://github.com/jquery/jquery

点击其中一个文本文件,如.gitattributes,然后点击痕迹中的jQuery,看看我的意思。

3 个答案:

答案 0 :(得分:13)

Github使用window.history.replaceState()

Here你可以看到他们是如何做到的

答案 1 :(得分:8)

在Chrome / Webkit浏览器的客户端使用XMLHttpRequest来获取服务器端资源而无需刷新页面,并且动态加载内容,并且可以在附加内容期间挂钩动画。

我不确定为什么只有Chrome是ajax的目标,因为当ajax以相同的方式应用时(例如twitter),哈希标记通常会发生变化。

对于动态更改的网址,我相信所做的一切都是location.href更新。 第二个想法,它可能是一些只有chrome支持的新HTML5功能。

答案 2 :(得分:2)

我发现这篇文章解释了这些HTML5功能 - window.history.pushState(),window.history.replaceState()和onpopstate()事件:http://www.spoiledmilk.dk/blog/?p=1922

正如文章所提到的,Flickr也在几个地方使用这种技术。