如果用户选择移出页面,如何在 onbeforeunload() 内部调用外部函数?

How to call an external function inside onbeforeunload() if the user chooses to move out of the page?

我看过很多示例,并在用户决定留在页面中时调用指定函数的地方进行了尝试。 如果用户决定离开页面,我需要在页面卸载之前调用外部函数。

onbeforeunload = function(){
  if(user decides to leave the page){
      func1();
  }
  else {
    //Don't do anything
  }
}

我尝试使用 "onunload",但我需要在调用函数之前提示用户。

提前致谢!

看起来您正在尝试 运行 一些自定义代码,然后用户离开页面,如果 beforeunload 对您不起作用,因为浏览器在您的代码 运行 您可以改为向 document 添加一个 mouseleave 事件侦听器。如果用户的鼠标离开文档,则很可能他们正在离开您的页面(关闭页面、更改选项卡、使用计算机上的其他程序等)。

document.addEventListener('mouseleave', () => {
 console.log('mouse left the document');
 // your code or function here
});

尝试运行使用上面的代码片段并将鼠标移入和移出结果框。

您必须同时使用 window.onbeforeunloadwindow.onunloadonbeforeunload returns 一个字符串,这会导致浏览器在离开前显示确认信息。如果用户确认离开,将触发onunload,然后在页面卸载前做你想做的事。

window.onbeforeunload = function() {
    return "Are you sure you want to leave?";
};
window.onunload = function() {
    func1();
};

您可以在这两个事件处理程序中执行的操作都有限制,因为您不能阻止用户离开页面(如果他们真的想离开)。恶意软件过去常常使用这些事件来执行诸如重新打开页面之类的操作,现在禁止这样做。