当用户在重定向后单击后退/前进按钮时尝试执行 javascript 函数

Trying to execute a javascript function when users click on back/forward button after redirect

提问人:Mr. Kenneth 提问时间:8/8/2023 更新时间:8/18/2023 访问量:35

问:

我想在用户重定向后单击退/前进按钮时执行 js 函数。我在下面有一个半工作功能:

detectHistoryEvent();
function detectHistoryEvent() {
  console.log(performance.navigation.type); // deprecated
  console.log(performance.getEntriesByType("navigation")[0].type); // currently used
  if (performance.getEntriesByType("navigation")[0].type && performance.getEntriesByType("navigation")[0].type === 'back_forward') {
    themethod(); // method I want to run
  }
}

工作场景1:

  1. 在用户单击执行的删除按钮时。PAGE 1POST REQUEST
  2. 如果成功,它将重定向到 。PAGE 2
  3. 从用户单击后退按钮开始,它将重定向到 .重定向后,由于上述功能,它将执行。这是因为 navigation 的值是 。PAGE 2PAGE 1themethod()back_forward

不工作场景 2:

  1. 在用户单击执行 的 href 时。PAGE 1GET REQUEST
  2. 如果成功,它将重定向到 。PAGE 2
  3. 从用户单击后退按钮开始,它将重定向到 .但是,不会执行。这是因为 nagivation 的值就像普通的 href 点击一样。PAGE 2PAGE 1themethod()navigate

是否可以检查用户是否单击了后退/前进按钮,即使执行?PAGE 1GET REQUEST

JavaScript 导航 浏览器-历史记录

评论


答:

1赞 Mr. Kenneth 8/18/2023 #1

经过几天的搜索,删除了我的问题的方法,并使用下面的代码来使用解决方案:

window.onpageshow = function(event) {
  if (event.persisted) {
      themethod();
  }
};

另一个 SO 问题的原始答案