如何在Chrome中检测Blink

rqenqsqc  于 2023-08-01  发布在  Go
关注(0)|答案(2)|浏览(109)

有没有办法检测到用户使用的是Blink或Webkit驱动的Chrome引擎?顺便说一句,我也很好奇,如果我可以检查的地方,如果我的浏览器是与 Flink 或没有。

yks3o0rb

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),它更简单,更干净:

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开始的IEMobileTridentEdge令牌。

byqmnocz

byqmnocz2#

[...]检测到用户使用Blink或Webkit驱动的Chrome引擎
如果您想检测 Chromium 浏览器,无论其布局引擎的名称(“Webkit”、“Blink”、“FutureEngine3000”)或浏览器 shell 的商业名称(“Chrome”、“Edge”、“Brave”等),请尝试**User-Agent Client Hints**API:

{
  const isChromium = brand => brand.brand === "Chromium";
  console.log(!!globalThis.navigator?.userAgentData?.brands?.some(isChromium));
}

字符串
有关其他属性,请参见https://user-agent-client-hints.glitch.me/javascript.html

相关问题