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

时间:2011-05-05 09:06:02

标签: javascript jquery

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

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

所以我想要做的是,当用户点击'about'链接时,页面将按原样加载(使用jquery),但我想更改浏览器地址栏中的URL字符串也是如此有人可以实际复制或书签确切的页面。

是否可以这样做?

2 个答案:

答案 0 :(得分:5)

你有两个可能来解决这个问题:

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

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

    www.mydomain.com/#!page=about
    

    #! is a convention from Google to make Ajax sites crawlable。由于片段标识符未发送到服务器,您必须使用JavaScript检测它并从服务器加载相应的数据 有jQuery plugins可以帮助您处理此问题。

我会寻找一个好的插件,如果可用的话,可以使用历史API,然后回到基于哈希的解决方案。


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

答案 1 :(得分:-1)

是的,我是通过

完成的
location.hash = 'foo';

您可以更改其他位置属性,不确定它的名称是什么?',可能是查询字符串,获取或类似内容。