为什么Opera mini 的User-Agent 奇怪地打印在iPad 上?

Why is the User-Agent of Opera mini printed strangely on iPad?

我使用 JavaScript 在 iPad 上打印 Opera mini 的用户代理字符串,如下所示。

alert(navigator.userAgent);

结果是

Mozilla/5.0 (iPad; CPU OS 11_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15G77

我不知道如何检测这个浏览器是 Opera Mini。

Why is the User-Agent of Opera mini printed strangely on iPad?

Opera 16 使用 Webkit 引擎运行,因此使用不同的用户代理。

Webkit 现在支持许多旧版本(使用 Presto 引擎)不支持的功能。

他们更改它的原因最可能是通过许多将阻止旧版 Opera 的 Web 服务器获得,他们经常在其中 欺骗 用户代理,并且在发现 opera mini,将其屏蔽为已过时(请注意,Microsoft 对 Windows phone)

使用了类似的技巧

...how can I detect this browser that is Opera Mini

简答,你不能

更长的答案,有 CSS 功能,如 -o-prefocus、媒体查询黑客等,您可以在这里找到其中的许多功能:http://browserhacks.com/

这些的缺点是,当浏览器特定 属性 消失时,您的检测也会消失。

相反,采用更具前瞻性的方法并检测功能,例如@supports()

在这个问题上,有一些更有趣的阅读方法,包括如何使用 CSS 和脚本