【问题标题】:Can Re-write / Modify URL with javascript / Jquery after page load页面加载后可以用 javascript/Jquery 重写/修改 URL
【发布时间】:2012-08-13 22:35:59
【问题描述】:

是否可以在不通过 jQuery/Javascript 重新加载页面的情况下重写 URL?

假设您有以下网址:

http://stackoverflow.com/questions/ask

我们可以附加值吗:/pId=XYZ

所以你可以得到

http://stackoverflow.com/questions/ask/pId=XYZ

这可能吗?

【问题讨论】:

  • 正确格式化您的问题非常容易,也许您可​​以做到?

标签: javascript jquery url url-rewriting client-side


【解决方案1】:

遇到这个问题后,我认为@DenysSéguret的答案正是你所需要的。

当浏览器支持时,可以使用

window.history.pushState(stateObj, title, url);

或者

window.history.replaceState(stateObj, title, url);

如@DenysSéguret 所述,您可以在
https://developer.mozilla.org/en-US/docs/Web/API/History_API

找到文档

【讨论】:

    【解决方案2】:

    你可以通过

    获取当前的Url
    var url = document.location.href;
    

    然后将部分添加到 url

    url += "/mySubFolder";
    

    我的帖子的其余部分不适合这个问题......我应该更仔细阅读:(!

    【讨论】:

      【解决方案3】:

      是的,您可以,而且您不需要 jquery:只需使用 History API:https://developer.mozilla.org/en-US/docs/DOM/Manipulating_the_browser_history

      请注意,在复杂的 ajax 应用程序中处理历史通常有点痛苦,因为您必须处理页面的状态序列化、状态加载等。而且你不能像许多 ajaxified 网站一样将它应用到设计糟糕的网站上。这不适用于像 IE9 这样的“旧”浏览器。

      【讨论】:

        【解决方案4】:

        是的,我们可以,但仅限于实现 pushState 的浏览器。

        Seeotheranswershere

        【讨论】:

          【解决方案5】:

          您无需重定向即可更改的只是 url 的哈希部分:

          document.location.hash = "whatever";
          

          【讨论】:

          • 简洁。谢谢
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2018-07-02
          • 2016-12-10
          • 1970-01-01
          • 2011-12-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多