我有一个类似于这里的ajax 导航。
现在如果单击菜单 window.location.hash 像这样添加#about
我想删除哈希 (#),以便人们可以轻松地自然地复制和共享链接。
如果没有 pagerefresh crossbrowserwise (IE7+,FF,Opera,Safari),如何在 2012 年 4 月做到这一点?
获取灵感:实际上有人已经这样做了,点击“投资组合”或“功能”并在浏览器中查看 url。
感谢您的提示
可用时使用历史 API。而不是设置哈希(在支持它的浏览器上),去:
history.pushState({ /* Some state object */ }, "A title representing this state");
popstate
然后,在事件监听器中处理状态变化。以这种方式做事意味着 URL 不会改变,但历史记录仍然可以正常工作。
您正在寻找的是pushState
: http ://badassjs.com/post/840846392/location-hash-is-dead-long-live-html5-pushstate
HTML5 让我们可以访问浏览器的浏览历史记录,让我们即时操作它:
window.history.pushState(data, "Title", "/new-url");
这会操纵当前页面以将“/new-url”显示为 url,将“Title”显示为页面的标题。有一些 javascript 库可以为您处理这个问题,例如主干.js。
如果您共享 URL,您将需要命令您的应用程序仍然提供正确的内容(或者只是提供为您提供内容的“基础”javascript 应用程序)。
希望这能让你指出正确的方向。