我正在使用历史记录 API 并使用 push 和 pop 状态。我想在某些场景下停止 popstate 事件触发,例如只在单击锚点时将
这是我的代码。
#
追加到 URL 中并立即触发 popstate。我希望避免所有追加 #
或 #somehasvalue
到 URL 的情况,并停止 popstate 事件的触发。我将查询参数与 URL 一起维护,并且没有任何需要在 URL 中使用 #
触发 popstate 事件的场景。这是我的代码。
if (supportsHistoryApi()) {
window.onpopstate = function (event) {
var d = event.state || {state_param1: param1, state_param2: param2};
var pathName = window.location.pathname,
params = window.location.search;
loadData(event, pathName + params, d.state_param1, d.state_param2);
}
replaceState
? - Gust van de WalpopState
事件是不可取消的,因此使用preventDefault
无效。但在页面加载时结合调用replaceState
并检查null
似乎可以正常工作。 - Nikitahistory.state
。当使用pushState
或replaceState
时,你可以传递一个自定义值给history.state
。 - Gonzalo