2

可能重复:
修改 URL 而不重新加载页面
使用新 URL 更新地址栏而不使用哈希或重新加载页面

我的站点完全基于 Ajax 请求,站点内的简单导航仅从一个页面完成。这意味着当用户单击菜单项时,它不会加载另一个页面,而是加载 HTML 元素内的内容。但是当用户想要将一个页面链接到他们的朋友时,它总是一样的,因为http://mysite.com/mymainpage.php总是一样的,不管 ajax 拉起什么。如何修改用户标题?例如,当他们单击“游戏”时,jquery/js/php/html 可以更改浏览器上的当前 URL 地址栏吗?这样它就变成了http://mysite.com/mymainpage.php?games=true。然后用户可以从地址栏中复制站点 url,它将导致 ajax 加载的正确部分。

4

1 回答 1

4

您可以使用哈希:

(这就是 gmail 所做的:https://mail.google.com/mail/#inboxhttps://mail.google.com/mail/#sent

您可以使用

window.location.hash /* gives "#games" */

或者

window.location.hash.substring(1) /* gives "games" */

你可以改变它使用

window.location.hash="#games"

或者

window.location.hash="games"

(似乎可行,但最好使用第一个选项)

然后,每次用户单击链接时,更改哈希值并像现在一样加载新页面。

当用户进入您的页面时,检查 URL 中是否有哈希并加载该页面。

您还可以添加一个 hashchange 事件侦听器。请参阅https://developer.mozilla.org/en-US/docs/Mozilla_event_reference/hashchange

编辑:

不,你不能有两个哈希(http://mysite.com/mymainpage.php#games#fashion

因此,如果用户访问http://mysite.com/mymainpage.php?games=true,您应该将他重定向到http://mysite.com/mymainpage.php#games

然后您可以将其更改为http://mysite.com/mymainpage.php#fashion而无需重新加载。

于 2012-09-02T13:26:05.567 回答