在所有浏览器中,似乎只有 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/