Javascript 是否可以通过编程方式触发onbeforeunload事件?

Javascript 是否可以通过编程方式触发onbeforeunload事件?,javascript,jquery,jquery-plugins,dom-events,Javascript,Jquery,Jquery Plugins,Dom Events,我目前使用的插件使用onbeforeunload来提示用户“未保存”的更改 但我有一个场景,我需要在点击按钮时触发它:点击按钮最终会导致页面更改,但我想在用户开始点击按钮开始的过程之前提示他们 那么,有没有一种方法可以通过jQuery或其他方式在卸载之前触发onbeforeunload呢?我不知道是否有直接的方法可以做到这一点,但您可以自己模拟浏览器的确认框。下面是我根据以下公式编写的一个简单函数: 编辑:在jquery.formobserver.js中,在卸载(e){…}之前的函数定义之后,添

我目前使用的插件使用onbeforeunload来提示用户“未保存”的更改

但我有一个场景,我需要在点击按钮时触发它:点击按钮最终会导致页面更改,但我想在用户开始点击按钮开始的过程之前提示他们


那么,有没有一种方法可以通过jQuery或其他方式在卸载之前触发onbeforeunload呢?

我不知道是否有直接的方法可以做到这一点,但您可以自己模拟浏览器的确认框。下面是我根据以下公式编写的一个简单函数:

编辑:
jquery.formobserver.js
中,在卸载(e){…}之前的
函数定义之后,添加以下行:

handler = beforeunload;
请注意原始代码中的更改:
窗口。onbeforeunload
已被
处理程序替换为

您可以使用以下方法执行此操作:


这几乎是我尝试的第一件事,但似乎触发器不能用于“beforeunload”,因为调用它时似乎什么都没有发生。@互斥我在回答之前也在想同样的事情,所以我设置了这个简单的测试:。也许这与form observe插件如何绑定onbeforeunload事件处理程序有关。是的,您可能是对的。插件不使用绑定;它是这样做的:如果(window.attachEvent){window.attachEvent('onbeforeunload',beforeunload);}或者如果(window.addEventListener){window.addEventListener('beforeunload',beforeunload,true);}在Firefox和IE8上,我在调用window.onbeforeunload时出错。Firefox错误为“window.onbeforeunload不是函数”,IE返回“Object不支持此属性或方法”Ok,因此问题在于插件通过
addEventListener
/
attachEvent
而不是直接通过
window.onbeforeunload
附加事件处理程序。我想您必须修改插件代码,以便在卸载之前获得对
函数的引用。谢谢!现在可以了。有没有关于避免使用全局for处理程序的建议?我想不出来。不过这应该不是问题,只要将
处理程序
重命名为不可能与另一个名称冲突的名称即可。@casablanca你能为这个做点修改吗
handler = beforeunload;
$('button').click(function(){
    $(window).trigger('beforeunload');
});