启动SweetAlert以防止用户关闭窗口。

9
我正在尝试在用户关闭窗口之前向其显示一条消息。我正在使用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上方显示丑陋的常规消息,有什么想法吗? 没有返回部分它仍然关闭窗口,我尝试了 :/

你能在你的网站上展示它的工作吗?仅凭这段代码片段,很难找出问题。 - Rohit Batra
我认为这是浏览器的默认行为,因此当用户尝试关闭浏览器时,无法阻止默认警报框的显示。 - Lee Han Kyeol
尝试使用 return ; 替换你当前正在使用的返回语句。 - Rohit Batra
1个回答

11

你不能禁用onbeforeunload上的警告,也不能更改其样式。主要原因是出于安全考虑。

从MDN文档WindowEventHandlers.onbeforeunload中可以得知:

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

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

还要注意,各种移动浏览器会忽略此事件的结果(即,它们不会要求用户确认)。Firefox在about:config中有一个隐藏的首选项来执行相同的操作。本质上,这意味着用户总是确认可以卸载文档。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接