关于php:如何在不重新加载的情况下更改标题URL?

Any way to change the header URL without reloading?

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
Modify the URL without reloading the page
Updating address bar with new URL without hash or reloading the page

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


您可以使用哈希:

  • http://mysite.com/mymainpage.php

  • http://mysite.com/mymainpage.php游戏

(Gmail就是这样做的:https://mail.google.com/mail/收件箱,https://mail.google.com/mail/已发送)

您可以使用

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

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

你可以用

1
window.location.hash="#games"

1
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而不需要重新加载。