Skip to content

onpopstate 可以监听到 pushstate 的事件吗?

Posted on:2024年9月3日 at 01:22

onpopstate 事件无法直接监听到 pushStatereplaceState 方法的调用。这是因为 pushStatereplaceState 方法本身不会触发 popstate 事件,它们只是修改浏览器的历史记录和 URL。

popstate 事件的触发条件

popstate 事件只会在以下情况下触发:

pushStatereplaceState 的作用

手动触发更新

如果你需要在调用 pushStatereplaceState 时执行某些操作,可以在这些方法的调用后手动执行回调函数:

function handleStateChange() {
  console.log("State changed:", history.state);
  // 更新页面内容或执行其他操作
}

function navigateTo(url, state = null) {
  history.pushState(state, "", url);
  handleStateChange();
}

function replaceState(url, state = null) {
  history.replaceState(state, "", url);
  handleStateChange();
}

// 使用示例
navigateTo("/page1", { page: 1 });
replaceState("/page2", { page: 2 });
原文转自:https://fe.ecool.fun/topic/b7510525-d358-4b38-a29d-430524dc2dca