Javascript pushState-后退/前进按钮无法正常工作

时间:2019-07-31 21:02:55

标签: javascript pushstate

我能够使用javascript window.history.pushState成功将网址推入浏览器历史记录中。

我可以单击浏览器的后退和前进按钮,URL会按预期更改。但是,它实际上并未带回上一页的内容。

我可以手动执行以下操作,方法是单击url栏并单击Enter键,但是我想以编程方式在单击后退或前进浏览器按钮时执行此操作。

我已经尝试过:

$(window).on("popstate", function() {
  alert("Back/Forward button was pressed.");
  window.location.reload(); // <-- brings back the page, but ruins the browser history stack. 
});

$(window).on("popstate", function() {
  alert("Back/Forward button was pressed.");
  window.location.href = window.location.href;
});

我对pushState的功能

var qstring = "?q=mysearchquery";

function addURLToHistoryAPI(qstring) {
  if (window.history && window.history.pushState) {
    window.history.pushState(null, null, qstring);
  }
}

1 个答案:

答案 0 :(得分:0)

您将不得不使用发送到历史记录的数据自己呈现内容。

您应该为Channel函数的第一个参数提供数据。这可以是某些页面ID或纯HTML内容。例如:

pushState

window.history.pushState(currentPageID, null, qstring);

然后,在事件侦听器中,您可以访问此数据并将其用于呈现页面,例如:

window.history.pushState($("main").html(), null, qstring);