退出html页面时没有对话框

退出html页面时没有对话框,html,Html,我的书中说,当我关闭浏览器、导航到其他页面或刷新页面时,下面的代码将显示一个消息框。这不会发生!为什么? <!DOCTYPE HTML PUBLIC="-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <title>Body attributes</title> <meta http-equiv="Content-type"

我的书中说,当我关闭浏览器、导航到其他页面或刷新页面时,下面的代码将显示一个消息框。这不会发生!为什么?

<!DOCTYPE HTML PUBLIC="-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

<html>
    <title>Body attributes</title>
    <meta http-equiv="Content-type" content="text/html; charset=ISO-8859-1">

<head>

</head>

    <body onload="window.alert('Greetings!')"
          onunload="window.alert('...Goodbye')">
    <h1>Loaded</h1>
    <a href="https://www.google.com/">Go to google!</a>

    </body>

</html>

身体属性
加载

如果您在关闭页面时可以在任意长的时间内运行任意代码,那么这可能是一个滥用的机会。如果旧浏览器支持它,我不会感到惊讶,但新浏览器出于安全原因停止支持它

如果要提示某人是否确实要退出网页,可以使用
onbeforeunload
,返回提示消息:

<body onbeforeunload="return 'I\'ll miss you!';">

浏览器对
卸载事件处理程序中可能执行的操作施加了限制。IE11仍然允许你在那里打开一个新窗口,但Chrome和Firefox没有;他们会忽略您对
窗口的调用。在那里发出警报。Chrome在控制台日志中描述了这一点:“卸载期间被阻止的警报(“…再见”)。这意味着在
unload
事件处理程序中,即使事件仍然被创建并可以处理,您也不能做太多事情

相反,您可以处理在实际卸载开始之前创建的。该事件首先在IE 4中实现,然后由其他浏览器供应商复制,现在已在HTML5规范第5.6.11条中定义。使用它,您仍然无法创建自己喜欢的窗口,但浏览器会向用户显示一个对话框。该对话框由浏览器以特定于浏览器的方式创建。通过让事件处理程序将消息作为值返回,您可以尝试将自己的消息注入其中,但Firefox故意忽略此类请求


加载

点击F12查看控制台中是否有任何消息。@mplungjan:当控制台打开时,您已经退出该页面,因此这不是一个可行的选项。@icktoofay-这没有意义。打开控制台,导航并查看出现的任何消息。@mplungjan:默认情况下,大多数浏览器在开始加载新页面时都会清除控制台。我想如果你能切换这个选项,这不是一个坏主意,但是如果你不能,这对你没有任何好处,因为你可能会看到一条消息,然后它立即消失。我的浏览器中没有问题,这是一个很好的理由。学习这个功能对我来说并不重要。但是,很高兴知道。