如何在javascript中检测浏览器选项卡关闭事件

如何在javascript中检测浏览器选项卡关闭事件,javascript,Javascript,在chrome浏览器中单击“关闭”选项卡图标时尝试调用“浏览器选项卡关闭”事件,但不起作用。我想在关闭浏览器选项卡之前显示警告消息。如何操作 以下代码不起作用: <!DOCTYPE html> <html> <head> <title>Page Title</title> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jq

在chrome浏览器中单击“关闭”选项卡图标时尝试调用“浏览器选项卡关闭”事件,但不起作用。我想在关闭浏览器选项卡之前显示警告消息。如何操作

以下代码不起作用:

<!DOCTYPE html>
<html>

<head>
    <title>Page Title</title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
</head>

<script type="text/javascript">
    window.onbeforeunload = function(evt) {
        var message = "Are you sure?"; 
        /* InternetExplorer/Firefox*/
        var e = evt || window.event
        e.returnValue = message 
        /* WebKit browser */
        return message;
    }
</script>

<body>
 
    <h1>This is a Heading</h1>
    <p>This is a paragraph.</p> 

</body> 
</html>

页面标题
window.onbeforeunload=函数(evt){
var message=“你确定吗?”;
/*InternetExplorer/Firefox*/
var e=evt | | window.event
e、 返回值=消息
/*网络工具包浏览器*/
返回消息;
}
这是一个标题
这是一个段落。


事实上,您已正确检测到选项卡关闭事件!问题在于您触发的操作。发件人:

为了防止出现不必要的弹出窗口,某些浏览器不显示在卸载前
事件处理程序中创建的提示,除非已与页面交互。此外,有些根本不显示它们

这意味着您很难在关闭浏览器选项卡之前按照自己的意愿显示警告消息。但是,您可以通过使用处理程序上的
返回值来实现类似的功能。再次引用文件:

当此事件返回(或将returnValue属性设置为)null或undefined以外的值时,将提示用户确认页面卸载。在旧浏览器中,事件的返回值显示在此对话框中。从Firefox 44、Chrome 51、Opera 38和Safari 9.1开始,将显示不受网页控制的通用字符串,而不是返回的字符串


有关更多详细信息,请参阅此其他问题。

在浏览器关闭事件之前询问用户确认的正确方法是:

window.onbeforeunload = function(evt) {
    var message = "Are you sure?";

    /* InternetExplorer/Firefox*/
    var e = evt || window.event
    e.returnValue = message

    /* WebKit browser */
    return message;
}
代码中的问题是警报函数调用的错误

在关闭窗口过程中不能调用任何阻塞函数。唯一的办法就是要求确认

在某些浏览器中,调用window.alert()、window.confirm()和 在此事件期间,可能会忽略window.prompt()。查看HTML 有关更多详细信息,请参阅规范


尝试console.log并在控制台中选中“保留日志”。您将看到,在您的情况下,
alert()
不起作用

为了防止欺诈,浏览器对这些消息非常谨慎。大多数人的能力都非常有限。Chrome显示标准化的消息“离开网站?您所做的更改可能不会被保存。”这是不可更改的。要实现这一点,只需使用:

  window.onbeforeunload = function () {
        return true;
    };

另一种方法是检测鼠标何时离开窗口。这是不一样的,但关闭选项卡之前通常会执行离开视口的操作。您可以在鼠标离开窗口时检测事件,并触发您喜欢的任何消息或弹出窗口。但我个人觉得这很烦人。

这能回答你的问题吗?事实并非如此。你可以在窗口关闭确认中显示自定义文本。这对所有浏览器都不正确。好吧,你有一个在chrome中工作的例子吗?如果是这样的话,我会删除我的答案,并且很高兴我学到了一些新的东西,在Mac上的ChromeV84中不适合我。我收到标准的(“离开网站?”)消息