我有一个类似here的 ajax导航。
现在如果单击一个菜单,就会添加window.location.hash #about
我想删除哈希(#),以便人们可以轻松地自然复制和分享链接。
如果没有pagerefresh crossbrowserwise(IE7 +,FF,Opera,Safari),2012年4月如何做到这一点?
获取灵感:Here实际上已有人这样做,点击“投放组合”或“功能”并在浏览器中观看网址。
感谢提示
答案 0 :(得分:1)
在可用时使用历史记录API。不要设置哈希(在支持它的浏览器上),请转到:
history.pushState({ /* Some state object */ }, "A title representing this state");
然后,处理popstate
事件侦听器中的状态更改。以这种方式做事意味着URL不会改变,但历史记录仍将完全正常运行。
答案 1 :(得分:1)
您要找的是pushState
:http://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应用)。
希望这能让你指出正确的方向。