以编程方式触发jQuery触发beforeunload事件

问题描述 投票:-1回答:1

我正在尝试使用jQuery在以下方式调用浏览器的onbeforeupload事件:-

<script type="text/javascript">

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

</script>

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

如何触发beforeunload事件?

javascript jquery jquery-events onbeforeunload
1个回答
1
投票

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

API说:

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

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

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

您可以并且应该通过window.addEventListener()处理此事件和beforeunload事件。那里有更多文档。

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

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

其他方式:

© www.soinside.com 2019 - 2024. All rights reserved.