【问题标题】:Can I change the URL string in the address bar using javascript我可以使用 javascript 更改地址栏中的 URL 字符串吗
【发布时间】:2011-08-19 04:54:38
【问题描述】:

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

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

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

可以吗?

【问题讨论】:

标签: javascript jquery


【解决方案1】:

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

  • 在较新的浏览器中,您可以使用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 并回退到基于哈希的解决方案。


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

【讨论】:

    【解决方案2】:

    是的,我做到了

    location.hash = 'foo';
    

    还有其他可以更改的位置属性,不确定它对 '?' 的调用是什么,可能是查询字符串、get 或类似的东西。

    【讨论】:

    • 通过location 对象更改查询字符串将重新加载页面。
    • 这将改变哈希符号之后的任何内容,例如您可以将 mydomain.com/page#foo 更改为 mydomain.com/page#bar,但这不是问题所在。
    猜你喜欢
    • 1970-01-01
    • 2021-04-06
    • 2014-12-16
    • 1970-01-01
    • 1970-01-01
    • 2014-04-04
    • 2021-11-19
    • 2019-07-26
    • 2016-07-28
    相关资源
    最近更新 更多