0

我有一个类似于这里的ajax 导航

现在如果单击菜单 window.location.hash 像这样添加#about

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

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

获取灵感:实际上有人已经这样做了,点击“投资组合”或“功能”并在浏览器中查看 url。

感谢您的提示

4

2 回答 2

1

可用时使用历史 API。而不是设置哈希(在支持它的浏览器上),去:

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

popstate然后,在事件监听器中处理状态变化。以这种方式做事意味着 URL 不会改变,但历史记录仍然可以正常工作。

于 2012-04-06T23:31:29.710 回答
1

您正在寻找的是pushStatehttp ://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 应用程序)。

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

于 2012-04-06T23:34:40.643 回答