2015-04-15 167 views
6

我想在关闭窗口之前向用户显示一条消息。我正在使用SweetAlert(http://tristanedwards.me/sweetalert),它运行良好。启动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上显示了丑陋的常见信息,有什么想法? 没有返回部分它反正关闭窗口,我试过:/

+0

你能展示它在你的网站上工作吗?只是通过这段代码片段,它很难找出问题。 –

+0

我认为这是浏览器的默认设置,因此当用户尝试关闭浏览器时,无法防止显示默认警报。 –

+0

尝试使用'return;'而不是当前使用的那个 –

回答

7

You can't disable the alert, nor change the style of the alert on onbeforeunload.主要原因是安全问题。

从MDN文件,WindowEventHandlers.onbeforeunload,它说,

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

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

还要注意,各种移动浏览器忽略事件的结果(也就是说,他们不要求用户确认)。 Firefox在about:config中有一个隐藏的偏好来执行相同的操作。本质上这意味着用户总是确认文件可能被卸载。