我正在使用 History API 并使用推送和弹出状态。我想在某些情况下停止触发 popstate 事件,我只将哈希附加到 URL。例如在某些情况下点击 anchor 它会将 #
附加到 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);
}
最佳答案
据我所知,不幸的是你无法阻止 popstate 触发。
您可以做的是检查 event.state
对象。这将在哈希更改时为 null。
所以我建议添加一个
if(event.state === null) {
event.preventDefault();
return false;
}
在一开始就给你的 popstate 事件处理程序。 我认为这是防止在散列更改时触发 popstate 处理代码的最佳方法,但我很想知道是否还有其他解决方案。
关于javascript - 停止在 hashchange 上触发 popstate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25634422/