跨浏览器 Onunload 和 Onbeforeunload ? (尤其是歌剧 11)

Posted

技术标签:

【中文标题】跨浏览器 Onunload 和 Onbeforeunload ? (尤其是歌剧 11)【英文标题】:cross-browser Onunload and Onbeforeunload ? (particularly opera 11) 【发布时间】:2011-01-13 17:39:01 【问题描述】:

我有一个表单,当表单中有数据尚未发送时,我必须在退出页面上用 alert() 通知用户。

我听说歌剧在这方面有很多问题。也就是 Opera 11,因为我只需要考虑最后一个版本。

同样,警报应该在刷新、关闭选项卡或关闭整个浏览器时显示。 最好将事件直接设置为 <form> 元素,该元素将在任何导致破坏该元素的东西上启动。

【问题讨论】:

onbeforeunload in Opera的可能重复 【参考方案1】:

Opera 还不支持 onbeforeunload。 Opera 的 onunload 支持不完整 - 例如,当您关闭选项卡或关闭 Opera 时它不会触发。据我所知,虽然您可以使用 onunload 在用户单击链接以导航离开带有未保存表单的页面时显示警告,但是当 unload 事件触发时,您无法阻止导航发生。

我在这里要做的是监听 onbeforeunload 事件,让它在其他浏览器中工作并等待 Opera 赶上。我不知道它是在 Opera 12 还是 13 还是 15 中,但是当实现 onbeforeunload 时,它将像在其他浏览器中一样工作。

【讨论】:

另外,Mobile Safari 不支持 onbeforeunload,所以如果您有任何移动用户,那么您可能需要寻找其他解决方案。 onbeforeunload 现在在基于 Webkit 引擎的 Opera 15 中得到支持!【参考方案2】:

Disable Close 还不能帮助你,因为 Opera 目前不支持 window.onbeforeunload。将来的某个版本将支持它。目前,Opera 11 没有实现它。

【讨论】:

【参考方案3】:

从 Opera 15 开始支持 onbeforeunload !

【讨论】:

【参考方案4】:

JQuery 框架只是一种精简的 javascript 语言,因此它完全取决于您使用的浏览器,这里没有魔法。

【讨论】:

这对这个问题有什么帮助?

以上是关于跨浏览器 Onunload 和 Onbeforeunload ? (尤其是歌剧 11)的主要内容,如果未能解决你的问题,请参考以下文章

事件:卸载事件(onunload)

Chrome浏览器中onunload有时候没反应怎么办

onbeforeunload和onunload

JS监听浏览器事件

JavaScript DOM

javascript   卸载事件(onunload)