if ((window.chrome || (window.Intl && Intl.v8BreakIterator)) && 'CSS' in window){
//Blink Engine
}
字符串 更新2:添加了一个额外的检查,因为一些Blink浏览器,如Opera移动的或傲游,缺少window.chrome对象。v8功能检查是必要的,以涵盖截至2014年12月的所有当前Blink引擎浏览器。 为了完整性,因为你也要求一个服务器端编程语言:在服务器端,甚至最终对于JS,只需查找WebKit/537.36。只有Blink用户代理将拥有该Webkit版本。据我所知,没有官方的Safari版本发布了这个版本号。但是,请注意从Windows IE now imitate Android and Blink开始的IEMobile、Trident或Edge令牌。
2条答案
按热度按时间yks3o0rb1#
Chrome 28+因此,如果您已经通过其useragent检测到Chrome,您可以检查:
version >= 28
虽然如果用户代理被欺骗,显然是不完全可靠的。对于一个额外的更可靠的方式,您可以检查chrome.notifications API状态,该状态在Blink/Chrome 28+(在ChromeOS,Windows和Mac以及Android 4.4上)中变得可用/稳定
参见此answer作为参考,详细信息参见此documentation。
更新:以前的想法是复杂和不可靠的。我把它拿掉了。
我遇到了Chrome 28添加的一个功能(即CSS.supports),它更简单,更干净:
字符串
更新2:添加了一个额外的检查,因为一些Blink浏览器,如Opera移动的或傲游,缺少
window.chrome
对象。v8功能检查是必要的,以涵盖截至2014年12月的所有当前Blink引擎浏览器。为了完整性,因为你也要求一个服务器端编程语言:在服务器端,甚至最终对于JS,只需查找
WebKit/537.36
。只有Blink用户代理将拥有该Webkit版本。据我所知,没有官方的Safari版本发布了这个版本号。但是,请注意从Windows IE now imitate Android and Blink开始的IEMobile
、Trident
或Edge
令牌。byqmnocz2#
[...]检测到用户使用Blink或Webkit驱动的Chrome引擎
如果您想检测 Chromium 浏览器,无论其布局引擎的名称(“Webkit”、“Blink”、“FutureEngine3000”)或浏览器 shell 的商业名称(“Chrome”、“Edge”、“Brave”等),请尝试**User-Agent Client Hints**API:
字符串
有关其他属性,请参见https://user-agent-client-hints.glitch.me/javascript.html。