【问题标题】:Launching SweetAlert to prevent user from closing window启动 SweetAlert 以防止用户关闭窗口
【发布时间】:2015-04-15 03:52:20
【问题描述】:

我试图在用户关闭窗口之前向他显示一条消息。我正在使用运行良好的 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 顶部显示了丑陋的通常消息,有什么想法吗? 如果没有返回部分,它无论如何都会关闭窗口,我试过了:/

【问题讨论】:

  • 你能在你的网站上展示它吗?仅通过此代码 sn-p 就很难找出问题所在。
  • 我认为这是浏览器的默认设置,因此无法阻止在用户尝试关闭浏览器时显示默认警报。
  • 尝试使用return ; 而不是您当前使用的

标签: javascript jquery sweetalert


【解决方案1】:

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 中有一个隐藏的偏好来做同样的事情。实质上,这意味着用户始终确认文档可能已被卸载。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-24
    • 1970-01-01
    • 1970-01-01
    • 2010-12-06
    • 1970-01-01
    • 1970-01-01
    • 2010-10-01
    • 2019-09-30
    相关资源
    最近更新 更多