如何在 Javascript 中检测 Microsoft Chromium Edge(chredge、edgium)
How to detect Microsoft Chromium Edge (chredge , edgium) in Javascript
'Edge 75' 将是(是?)第一个基于 Chromium 的 Edge 浏览器。我如何检查此浏览器是否是 Chrome 上的 Edge?
(我真正想知道的是浏览器是否完全支持数据 uri - https://caniuse.com/#feat=datauri - 所以特征检测会更好。如果你知道这样做的方法,我可以改变问题)
您可以使用 window.navigator userAgent 来检查浏览器是 Microsoft Chromium Edge 还是 Chrome。
代码如下:
<script>
var browser = (function (agent) {
switch (true) {
case agent.indexOf("edge") > -1: return "edge";
case agent.indexOf("edg/") > -1: return "chromium based edge (dev or canary)"; // Match also / to avoid matching for the older Edge
case agent.indexOf("opr") > -1 && !!window.opr: return "opera";
case agent.indexOf("chrome") > -1 && !!window.chrome: return "chrome";
case agent.indexOf("trident") > -1: return "ie";
case agent.indexOf("firefox") > -1: return "firefox";
case agent.indexOf("safari") > -1: return "safari";
default: return "other";
}
})(window.navigator.userAgent.toLowerCase());
document.body.innerHTML = window.navigator.userAgent.toLowerCase() + "<br>" + browser;
</script>
Chrome 浏览器 userAgent:
mozilla/5.0 (windows nt 10.0; win64; x64) applewebkit/537.36 (khtml,
like gecko) chrome/74.0.3729.169 safari/537.36
Edge浏览器userAgent:
mozilla/5.0 (windows nt 10.0; win64; x64) applewebkit/537.36 (khtml,
like gecko) chrome/64.0.3282.140 safari/537.36 edge/18.17763
Microsoft Chromium Edge Dev userAgent:
mozilla/5.0 (windows nt 10.0; win64; x64) applewebkit/537.36 (khtml,
like gecko) chrome/76.0.3800.0 safari/537.36 edg/76.0.167.1
Microsoft Chromium Edge Canary 用户代理:
mozilla/5.0 (windows nt 10.0; win64; x64) applewebkit/537.36 (khtml,
like gecko) chrome/76.0.3800.0 safari/537.36 edg/76.0.167.1
我们可以看到 Microsoft Chromium Edge userAgent 包含“edg”关键字,我们可以用它来检测浏览器是 Chromium Edge 浏览器还是 Chrome浏览器。
使用 CanIUse,这是最通用的功能,在旧版 Edge(使用 EdgeHtml 引擎)上不支持,但在 Edge Chromium 中支持在其他任何地方(除了 IE),都是 reversed attribute on an OL list。此属性的优点是在其他所有方面都得到了多年的支持。
(这是我能找到的唯一一个涵盖所有其他浏览器的浏览器,包括 Opera Mini;如果您不担心,还有 plenty of others。)
因此,您可以使用简单的特征检测来查看您是否使用旧边缘(或 IE)-
var isOldEdgeOrIE = !('reversed' in document.createElement('ol'));
由于我从另一边发现了这个问题,如何实际检查是否正在使用 pre-chromium-edge,我找到了以下解决方案(包括 IE 检查):
// Edge < 18
if (window.navigator.userAgent.indexOf('Edge') !== -1) {
return true;
}
// IE 11
if (window.document.documentMode) {
return true;
}
// IE 10
if (navigator.appVersion.indexOf('MSIE 10') !== -1) {
return true;
}
return false;
'Edge 75' 将是(是?)第一个基于 Chromium 的 Edge 浏览器。我如何检查此浏览器是否是 Chrome 上的 Edge?
(我真正想知道的是浏览器是否完全支持数据 uri - https://caniuse.com/#feat=datauri - 所以特征检测会更好。如果你知道这样做的方法,我可以改变问题)
您可以使用 window.navigator userAgent 来检查浏览器是 Microsoft Chromium Edge 还是 Chrome。
代码如下:
<script>
var browser = (function (agent) {
switch (true) {
case agent.indexOf("edge") > -1: return "edge";
case agent.indexOf("edg/") > -1: return "chromium based edge (dev or canary)"; // Match also / to avoid matching for the older Edge
case agent.indexOf("opr") > -1 && !!window.opr: return "opera";
case agent.indexOf("chrome") > -1 && !!window.chrome: return "chrome";
case agent.indexOf("trident") > -1: return "ie";
case agent.indexOf("firefox") > -1: return "firefox";
case agent.indexOf("safari") > -1: return "safari";
default: return "other";
}
})(window.navigator.userAgent.toLowerCase());
document.body.innerHTML = window.navigator.userAgent.toLowerCase() + "<br>" + browser;
</script>
Chrome 浏览器 userAgent:
mozilla/5.0 (windows nt 10.0; win64; x64) applewebkit/537.36 (khtml, like gecko) chrome/74.0.3729.169 safari/537.36
Edge浏览器userAgent:
mozilla/5.0 (windows nt 10.0; win64; x64) applewebkit/537.36 (khtml, like gecko) chrome/64.0.3282.140 safari/537.36 edge/18.17763
Microsoft Chromium Edge Dev userAgent:
mozilla/5.0 (windows nt 10.0; win64; x64) applewebkit/537.36 (khtml, like gecko) chrome/76.0.3800.0 safari/537.36 edg/76.0.167.1
Microsoft Chromium Edge Canary 用户代理:
mozilla/5.0 (windows nt 10.0; win64; x64) applewebkit/537.36 (khtml, like gecko) chrome/76.0.3800.0 safari/537.36 edg/76.0.167.1
我们可以看到 Microsoft Chromium Edge userAgent 包含“edg”关键字,我们可以用它来检测浏览器是 Chromium Edge 浏览器还是 Chrome浏览器。
使用 CanIUse,这是最通用的功能,在旧版 Edge(使用 EdgeHtml 引擎)上不支持,但在 Edge Chromium 中支持在其他任何地方(除了 IE),都是 reversed attribute on an OL list。此属性的优点是在其他所有方面都得到了多年的支持。
(这是我能找到的唯一一个涵盖所有其他浏览器的浏览器,包括 Opera Mini;如果您不担心,还有 plenty of others。)
因此,您可以使用简单的特征检测来查看您是否使用旧边缘(或 IE)-
var isOldEdgeOrIE = !('reversed' in document.createElement('ol'));
由于我从另一边发现了这个问题,如何实际检查是否正在使用 pre-chromium-edge,我找到了以下解决方案(包括 IE 检查):
// Edge < 18
if (window.navigator.userAgent.indexOf('Edge') !== -1) {
return true;
}
// IE 11
if (window.document.documentMode) {
return true;
}
// IE 10
if (navigator.appVersion.indexOf('MSIE 10') !== -1) {
return true;
}
return false;