javascript - 检测不支持 onunload/onbeforeunload 的浏览器

标签 javascript opera onbeforeunload onunload browser-feature-detection

在所有浏览器中,似乎只有 Opera 不支持 onunload/onbeforeunload 事件。 (现在已经十五年了,Opera!)这个问题的解决方案已经被多次提及,例如:onbeforeunload support detection

不幸的是,从 Opera 11.51 开始,("onbeforeunload"in window) == true,但实际的 onbeforeunload 事件从未执行!

当用户离开页面时,我的 Web 应用程序需要向服务器发送数据;我正在为此使用同步 ajax 请求。看来我不得不求助于使用页面上某处的“保存”按钮来掩盖 Opera 问题。但是,我不希望这个按钮让浏览器能够通过 ajax 自动保存的用户感到困惑,所以我真的希望这个按钮只显示在 Opera 中。

浏览器检测是我唯一的选择吗?问题是,Opera 可以选择将自己伪装成其他浏览器。

最佳答案

我无法重现您发现 'onbeforeunload' in window 在 Opera 11.5x 中是 true。这是最好的方法,应该仍然有效。你确定你没有在某个地方留下一些定义吗,例如你写了

onbeforeunload = function (){ ... }

稍后在执行特征检测的同一脚本中?如果你执行 alert(window.onbeforeunload),你会看到什么?您能否分享指向出现问题的页面的链接?

关于javascript - 检测不支持 onunload/onbeforeunload 的浏览器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7527969/

相关文章:

Javascript - Array.repeat 限制?

javascript - 弹出键盘时向上滚动文本字段

javascript - ESLint 导入/模块被视为未定义

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

jquery - 在页面卸载/浏览器关闭之前运行动画

javascript - 如何使用混合(字母和数字)元素按自然顺序对数组元素进行排序

html - 奇怪的(?)歌剧漂浮

html - 浏览器特定 "Override Hangers"

c# - 在浏览器关闭时运行服务器端功能

javascript - window.onbeforeunload,关闭浏览器和同步AJAX