8

我试图在用户关闭窗口之前向他显示一条消息。我正在使用运行良好的 SweetAlert ( http://tristanedwards.me/sweetalert )。

问题在于 JavaScript/jQuery 让我知道用户何时尝试关闭窗口/选项卡,然后显示阻止他关闭页面的内容,除非他再次单击。

<script language="JavaScript">
    window.onbeforeunload = confirmExit;
    function confirmExit() {
        swal("Here's a message!");
        return "You have attempted to leave this page. Are you sure?";
    }
</script>

我已经尝试过了,但它在我的 SweetAlert 顶部显示了丑陋的通常消息,有什么想法吗?如果没有返回部分,它无论如何都会关闭窗口,我试过了:/

4

1 回答 1

10

您不能禁用警报,也不能更改警报的样式onbeforeunload主要原因是安全问题。

从 MDN 文档WindowEventHandlers.onbeforeunload中,它说,

当此事件返回非空值时,将提示用户确认页面卸载。在大多数浏览器中,事件的返回值显示在此对话框中。在 Firefox 4 及更高版本中,返回的字符串不会显示给用户。相反,Firefox 会显示字符串“此页面要求您确认是否要离开 - 您输入的数据可能不会被保存。” 请参阅错误 588292。

自 2011 年 5 月 25 日起,HTML5 规范规定在此事件期间可能会忽略对 window.alert()、window.confirm() 和 window.prompt() 方法的调用。有关更多详细信息,请参阅 HTML5 规范。

另请注意,各种移动浏览器会忽略事件的结果(即,它们不要求用户确认)。Firefox 在 about:config 中有一个隐藏的偏好来做同样的事情。实质上,这意味着用户始终确认可以卸载文档。

于 2015-04-15T05:11:07.480 回答