有啥方法可以在不重新加载的情况下更改标头 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? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何在不重新加载页面的情况下更改 URL?

如何在不重新加载页面的情况下更改页面 url

如何在不重新加载的情况下修改 URL 查询字符串

AngularJS UI 路由器 - 在不重新加载状态的情况下更改 url

Backbone.js 在不重新加载页面的情况下更改 url

如何在不更改 javascript 中的 URL 的情况下重新加载当前页面一次?