我可以使用javascript更改地址栏中的URL字符串吗

我可以使用javascript更改地址栏中的URL字符串吗,javascript,jquery,Javascript,Jquery,我的网页上有一个链接,说“关于”。单击它加载一个特定的div,而不使用jquery.load()刷新整个页面。这不会更改浏览器地址栏中的URL字符串 通过转到www.mydomain.com/?page=about可以访问同一页面 因此,我想做的是,当用户单击“关于”链接时,页面将按原样加载(使用jquery),但我还想更改浏览器地址栏中的URL字符串,以便有人可以实际复制或为确切的页面添加书签 有可能这样做吗?是的,我是这样做的 location.hash = 'foo'; 您还可以更改位置

我的网页上有一个链接,说“关于”。单击它加载一个特定的div,而不使用jquery
.load()
刷新整个页面。这不会更改浏览器地址栏中的URL字符串

通过转到
www.mydomain.com/?page=about
可以访问同一页面

因此,我想做的是,当用户单击“关于”链接时,页面将按原样加载(使用jquery),但我还想更改浏览器地址栏中的URL字符串,以便有人可以实际复制或为确切的页面添加书签


有可能这样做吗?

是的,我是这样做的

location.hash = 'foo';

您还可以更改位置的其他属性,不确定它的名称为“?”,可能是查询字符串、get或类似的内容。

您有两种可能解决此问题:

  • 在较新的浏览器中,您可以使用,它允许更改URL的一部分,还可以更改查询字符串(和路径afaik)

  • 在不支持此功能的浏览器中,您只能更改片段标识符
    ,而无需(通过对象)重新加载页面。这意味着您必须将URL更改为例如

    www.mydomain.com/#!page=about
    
    。由于片段标识符没有发送到服务器,因此必须使用JavaScript检测它并从服务器加载相应的数据。
    有一些方法可以帮助您处理此问题

我会寻找一个好的插件,如果可以的话,它可以使用历史API,并且可以使用基于散列的解决方案


如我在评论中所述,您还可以在此处找到更多信息:


哦。我想我在这里也得到了同样的东西。这应该会帮助你:^^^在Felix的帖子中找到完美答案。通过
位置
对象更改查询字符串将重新加载页面。这将更改哈希符号后出现的任何内容,例如,你可以将mydomain.com/page#foo更改为mydomain.com/page#bar,但这不是问题所在。请看Felix的回答: