【问题标题】:Keep original url for pushstate保留 pushstate 的原始 url
【发布时间】:2017-08-02 14:15:13
【问题描述】:

我使用以下函数:

$( document ).ajaxComplete(function() {
     var currenturl = window.location.href;
     var decodedUri = decodeURIComponent(currenturl);

    var decodedUri2 =decodedUri.replace("&manufacturer[]=","/").replace("&page=","/").replace("&sort=","/").replace("&order=","/");
     history.pushState("", "", decodedUri2);

});

我需要在每个 ajax 完成时以某种方式更改原始 url,而不是以前通过 pushState 更改的 url。

使用上面的函数,首先 ajax 完成 pushState 完成了这项工作,但在下一个 ajax 完成 pushState decodedUri2 尝试从更改的 url 替换,但我每次都需要更改原始 url 和 pushState 结果。这可能吗?

有什么实现这一目标的想法吗?

谢谢!

编辑: 改写问题。每次 ajax 完成时,都会向 URL 添加一些属性,我需要替换这些属性。再次与每个 ajax 请求相同。所以实际上我每次完成ajax完成时都需要以某种方式在ajax完成后但从原始状态pushState当前URL。

示例http://ocdemo.eu/desktops

如果您每次使用 ajax 更改 url 时从左列中选择过滤器。所以每次我需要将显示的网址替换为其他内容时

【问题讨论】:

    标签: javascript jquery pushstate


    【解决方案1】:

    对于任何搜索此内容、希望在不更新页面 URL 的情况下应用 pushState 的人。您可以完全省略参数,如文档中所述:

    https://developer.mozilla.org/en-US/docs/Web/API/History/pushState

    两者都可以:

    history.pushState("", "");
    history.pushState("", "", "");
    

    如果您希望在当前 URL 中更改 AJAX 调用的 URL 参数,线程上有很多讨论:

    How to replace url parameter with javascript/jquery?

    【讨论】:

      【解决方案2】:

      您必须将该 url 捕获到一个变量并使用它:

      var initialUrl;
      
      $( document ).ajaxComplete(function() {
           var currenturl = window.location.href;
           if (!initialUrl) {
             initialUrl = decodeURIComponent(currenturl);
           }
      
          var decodedUri2 =initialUrl.replace("&manufacturer[]=","/").replace("&page=","/").replace("&sort=","/").replace("&order=","/");
           history.pushState("", "", decodedUri2);
      
      });
      

      【讨论】:

      • 我刚刚使用了您的代码,但也许这是我的错,需要重新表述问题。每次 ajax 完成时,都会向 URL 添加一些属性,我需要替换这些属性。再次与每个 ajax 请求相同。所以实际上我每次完成ajax完成时都需要以某种方式在ajax完成后但从原始状态pushState当前URL。例如:ocdemo.eu/desktops。如果您每次使用 ajax 更改 url 时从左列中选择过滤器。所以每次我需要将显示的网址替换为其他内容时
      猜你喜欢
      • 2015-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-29
      • 1970-01-01
      • 2015-11-13
      • 2020-08-25
      • 2022-10-13
      相关资源
      最近更新 更多