【问题标题】:How to detect old Opera via JavaScript (non-Webkit, non-Next, version 14-)如何通过 JavaScript 检测旧的 Opera(非 Webkit,非 Next,版本 14-)
【发布时间】:2013-07-29 11:35:06
【问题描述】:
Non-Webkit Opera 在某些功能中为very specific,因此通常通过JavaScript 检测到the following way。
不过,Opera Next 似乎几乎是 Google Chrome 的克隆版。
如何定位旧 Opera 而不是定位 Opera Next?
PS:我真的知道浏览器检测很烂,特征检测规则。但我希望用一个微小的浏览器检测补丁来更新这个正在运行的大型项目,而不是将大量代码重写为特征检测范式。
【问题讨论】:
标签:
javascript
opera
browser-detection
【解决方案1】:
我找到了问题的根源。它在那个项目中处于不良浏览器检测中。如果您检测到与the link given in the question 中完全相同的 Opera,则不会检测到 Opera Next 是 Opera,因此不会执行 Old-Opera-Specific 代码,而是运行 Chrome-Specific-Code。
!!window.opera; // true in old Opera, false in Opera Next
navigator.userAgent.indexOf("Opera");// ------- the same --------
PS:幸运的是,我对我的项目进行了很多测试,所以我可以看出,在新的 Opera 中,一切都与在 Google Chrome 中完全一样。
一段导致问题的代码试图检测 Opera Old AND Opera Next:
/(Opera|OPR)/.test(navigator.userAgent)
结论: Opera 迁移做得非常好,您的项目不会中断。不要检测 Opera Next,只需将其视为通常的 Google Chrome。
更新:以前的 Opera 版本已从 caniuse.com 删除