使用JavaScript历史记录API更改网址,而不替换以前的网址

时间:2016-03-15 04:26:18

标签: javascript browser-history

我正在尝试制作类似谷歌地图方向模块的东西,但我坚持使用模块的URL部分。我面临的问题是每次用户从自动建议结果中选择内容时都要更改URL,因此每次都会创建新的历史记录。所以按下后退按钮会生成我不希望的URL。我还使用了replacesate(),但它改变了我之前的网址。请参阅谷歌地图以了解我的问题。

我更改网址的方式是

window.history.pushState("", title, newUrl);

假设我第一次搜索德里到阿格拉。然后我搜索了一些其他组合。选中后,我正在更改URL。按下后退按钮不会让我得到delhi到agra的结果,而是显示我选择时更改了url的结果。我希望我已经解释了我的问题。

用于更改每个选择的URL的函数是

var call_url = function(title, req_url, inputId)
{
  if(!title) 
  {
    title = req_url.replace('place-','');
  }
  var url = window.location.toString().split('/');
  var curl = url.slice(-1)[0];
  if(curl != req_url)
  {
    if($.inArray("direction", url) !== -1 || url[4].indexOf("direction-") !== -1)  // check to handle direction url
    {
      var elementId = ($(':focus')[0]) ? $(':focus')[0].id : inputId;
      if(elementId && (elementId == 'auto_start' || elementId == 'auto_end' || elementId.indexOf('via') !== -1))
      {
        newUrl = directionUrl(req_url, url[4], elementId);
      }
      else
      {
        newUrl = req_url;
      }
    }
    else
    {
      newUrl = req_url;
      document.title = title.replace(/\-/g,", ").replace(/\+/g," ");
    }
    window.history.pushState("", title, newUrl);
  }
};

0 个答案:

没有答案