Question

Is there any way to detect that the user is coming with Blink or Webkit powered Chrome engine? By the way i'm also curious about if i can check somewhere if my browser is with blink or not.

Was it helpful?

Solution

Blink is Chrome 28+. So if you are already detecting Chrome via its useragent you could just check: version >= 28 Though not fully reliable if the user agent is spoofed, obviously.

For an additional more reliable way you can check the chrome.notifications API status which became available/stable with Blink/Chrome28+ (on ChromeOS, Windows, and Mac and then Android 4.4)

See this answer for ref, and this documentation for details.

UPDATE: That previous idea was complicated and unreliable. I removed it.

I ran into a feature that was added with Chrome 28 (namely CSS.supports) which is easier and cleaner:

if ((window.chrome || (window.Intl && Intl.v8BreakIterator)) && 'CSS' in window){
//Blink Engine
}

UPDATE 2: Added an extra check because some Blink browsers like Opera Mobile or Maxthon lack the window.chrome object. A v8 feature check is necessary to cover all current Blink engine browsers as of Dec 2014.

And for completeness since you asked for a server side programming language too: On the server side or even for JS eventually, just look for WebKit/537.36. Only a Blink user agent will have that Webkit version. No official Safari version was released with that build number as far as I can tell. However, watch for the IEMobile, Trident or Edge tokens since Windows IE now imitate Android and Blink.

OTHER TIPS

[...] detect that the user is coming with Blink or Webkit powered Chrome engine

I guess the question is looking for a solution to detect "Chromium" browser regardless how its engine is called ("Webkit", "Blink", "FutureEngine3000") or how the browser is commercially called ("Chrome", "Edge", "Brave"*, ...).

In that case, try the User-Agent Client Hints API:

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

For other properties, see https://user-agent-client-hints.glitch.me/javascript.html.


* Some browsers explicitly hide navigator.userAgentData from being read. See e.g. Brave PR 11932.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top