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

San*_*dro 9 apache mod-rewrite url-rewriting

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

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

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

nun*_*nia 13

Github使用window.history.replaceState()

在这里你可以看到他们是如何做到的


med*_*iev 8

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

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

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

  • 是的,它是`history.pushState` (3认同)
  • AJAX部分并不是我真正感兴趣的部分,我更感兴趣的是如何更改URL而不刷新页面. (2认同)
  • 我认为这可能与此有关:https://developer.mozilla.org/en/DOM/Manipulating_the_browser_history (2认同)