如何通过JavaScript检测旧Opera(非Webkit,非Next,版本14-)

如何通过JavaScript检测旧Opera(非Webkit,非Next,版本14-),javascript,opera,browser-detection,Javascript,Opera,Browser Detection,非Webkit Opera在某些功能中是可用的,因此通常通过JavaScript检测 然而,Opera下一步几乎是Google Chrome的克隆 我如何瞄准老歌剧而不是下一部歌剧 PS:我真的知道浏览器检测很糟糕,还有特征检测规则。但我希望用一个小小的浏览器检测补丁来更新这个庞大且正在运行的项目,而不是将大量代码重写为功能检测范例。我已经找到了问题的根源。在那个项目中,浏览器检测很差。如果您像中一样检测Opera,则不会检测到Opera Next是Opera,因此不会执行旧的Opera特定代

非Webkit Opera在某些功能中是可用的,因此通常通过JavaScript检测

然而,Opera下一步几乎是Google Chrome的克隆

我如何瞄准老歌剧而不是下一部歌剧



PS:我真的知道浏览器检测很糟糕,还有特征检测规则。但我希望用一个小小的浏览器检测补丁来更新这个庞大且正在运行的项目,而不是将大量代码重写为功能检测范例。

我已经找到了问题的根源。在那个项目中,浏览器检测很差。如果您像中一样检测Opera,则不会检测到Opera Next是Opera,因此不会执行旧的Opera特定代码,而是运行Chrome特定代码

 !!window.opera;                      // true in old Opera, false in Opera Next

 navigator.userAgent.indexOf("Opera");//   -------    the same    --------
PS:幸运的是,我在我的项目上有很多测试,所以我可以告诉大家,在新的Opera中,一切都和谷歌Chrome一样正常

一段导致问题的代码试图检测Opera Old和Opera Next:

/(Opera|OPR)/.test(navigator.userAgent)
结论:Opera迁移做得很好,项目中不应出现任何问题。不要检测Opera Next,只需像谷歌Chrome一样处理它

更新:之前的Opera版本已经从caniuse.com上删除