【问题标题】:jQuery trigger beforeunload event programmaticallyjQuery 以编程方式触发 beforeunload 事件
【发布时间】:2016-02-06 12:53:04
【问题描述】:

我正在尝试使用 jQuery 调用浏览器的 onbeforeupload 事件,如下所示:-

<script type="text/javascript">

$(document).ready(function (){
    $(window).trigger('beforeunload');
})

</script>

它不显示浏览器默认的 onunload 事件确认框,这意味着 beforeunload 事件没有被触发。

如何触发 beforeunload 事件?

【问题讨论】:

  • 您是否附加了一个中断卸载过程的处理程序?
  • 我想用两个按钮显示确认框,即离开页面,留在页面上。我认为它应该被触发,因为我调用了它
  • 这只是在某些动作之后发生的事件。如果你只是触发它,它不会导致“离开”动作。以下是触发此事件的操作列表:msdn.microsoft.com/en-us/library/ms536907(VS.85).aspx

标签: javascript jquery jquery-events onbeforeunload


【解决方案1】:

为什么你认为显示确认对话框是默认行为?

API 说:

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

自 2011 年 5 月 25 日起,HTML5 规范声明调用 window.alert()、window.confirm() 和 window.prompt() 方法可能是 在此事件中被忽略。有关更多信息,请参阅 HTML5 规范 详情。

另请注意,各种移动浏览器会忽略事件的结果 (也就是说,他们不要求用户确认)。火狐有一个 about:config 中的隐藏首选项可以执行相同的操作。本质上这 表示用户始终确认文档可以被卸载。

你可以并且应该通过 window.addEventListener() 来处理这个事件 和 beforeunload 事件。那里提供了更多文档。

因此,您需要事先为事件添加一个处理程序:

$(window).on('beforeunload', function(){
   ...
});

其他方式:

【讨论】:

  • 谢谢,我明白了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多