有啥方法可以在不重新加载的情况下更改标头 URL? [复制]
Posted
技术标签:
【中文标题】有啥方法可以在不重新加载的情况下更改标头 URL? [复制]【英文标题】:Any way to change the header URL without reloading? [duplicate]有什么方法可以在不重新加载的情况下更改标头 URL? [复制] 【发布时间】:2012-08-27 12:09:24 【问题描述】:可能重复:Modify the URL without reloading the pageUpdating address bar with new URL without hash or reloading the page
我的站点完全基于 Ajax 请求,站点内的简单导航仅从一个页面完成。这意味着当用户单击菜单项时,它不会加载另一个页面,而是加载 html 元素内的内容。但是当用户想要将一个页面链接到他们的朋友时,它总是相同的,因为http://mysite.com/mymainpage.php 总是相同的,不管 ajax 启动了什么。如何修改用户标题?例如,当他们单击“游戏”时,jquery/js/php/html 可以更改浏览器上的当前 URL 地址栏吗?这样它就变成了http://mysite.com/mymainpage.php?games=true。然后,用户只需从地址栏中复制站点 url,它将引导到正确的部分以供 ajax 加载。
【问题讨论】:
HASH 答案是正确的。然而实施它是......很难。看看a nice plugin from JQuery。 【参考方案1】:你可以使用哈希:
http://mysite.com/mymainpage.php
http://mysite.com/mymainpage.php#games
(这就是 gmail 所做的:https://mail.google.com/mail/#inbox,https://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 而无需重新加载。
【讨论】:
太好了,谢谢!有什么办法可以清除当前的哈希?例如,如果原始页面已经有 mysite.com/mymainpage.php?games=true 执行此代码会执行 mysite.com/mymainpage.php#games#fashion 它添加到它以上是关于有啥方法可以在不重新加载的情况下更改标头 URL? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
AngularJS UI 路由器 - 在不重新加载状态的情况下更改 url