在没有刷新的情况下从Ajax导航中的url中删除散列(#)

时间:2012-04-06 23:23:55

标签: php jquery ajax url

我有一个类似here ajax导航

现在如果单击一个菜单,就会添加window.location.hash #about

我想删除哈希(#),以便人们可以轻松地自然复制和分享链接。

如果没有pagerefresh crossbrowserwise(IE7 +,FF,Opera,Safari),2012年4月如何做到这一点?

获取灵感:Here实际上已有人这样做,点击“投放组合”或“功能”并在浏览器中观看网址。

感谢提示

2 个答案:

答案 0 :(得分:1)

在可用时使用历史记录API。不要设置哈希(在支持它的浏览器上),请转到:

history.pushState({ /* Some state object */ }, "A title representing this state");

然后,处理popstate事件侦听器中的状态更改。以这种方式做事意味着URL不会改变,但历史记录仍将完全正常运行。

答案 1 :(得分:1)

您要找的是pushStatehttp://badassjs.com/post/840846392/location-hash-is-dead-long-live-html5-pushstate

HTML5让我们可以访问浏览器的浏览历史记录,让我们即时操作它:

window.history.pushState(data, "Title", "/new-url");

这会操纵当前页面,将“/ new-url”显示为网址,将“标题”显示为页面标题。有一些javascript库可以为您处理这些问题,例如backbone.js

如果您共享该网址,则需要命令您的应用仍然提供正确的内容(或者只是提供为您提供内容的'基础'javascript应用)。

希望这能让你指出正确的方向。