如何使用javascript定位Windows 10 Edge浏览器

Wil*_*Wit 33 javascript browser-detection microsoft-edge

我知道你应该尽可能地进行功能检测,但是如果浏览器是Microsoft Edge浏览器,你可以在Javascript中检测到吗?

我维护一个旧产品,我想显示一个警告,可以打破一些功能,而无需花费大量时间来修复旧代码.

san*_*rom 43

尝试检测功能而不是特定的浏览器.它更具有前瞻性.您很少使用浏览器检测.

除此之外:一个选项是使用库(用户代理字符串有许多复杂性),或者window.navigator.userAgent手动解析.

使用解析器库

# https://github.com/faisalman/ua-parser-js.

var parser = new UAParser();
var result = parser.getResult();

var name = result.browser.name;
var version = result.browser.version;
Run Code Online (Sandbox Code Playgroud)

使用Javascript的原始方法

# Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) \
# Chrome/42.0.2311.135 Safari/537.36 Edge/12.10136

window.navigator.userAgent.indexOf("Edge") > -1
Run Code Online (Sandbox Code Playgroud)

  • Edg 适用于基于 Chromium 的新 Edge,应将其检测为 Chrome 以获得最大兼容性。 (7认同)
  • 请注意,出于某种原因,某些版本的 Edge 将用户代理报告为 Edg(缺少最后一个“e”)。 (3认同)

Man*_*kar 21

这是检测Edge浏览器的简单脚本

if (/Edge/.test(navigator.userAgent)) {
    alert('Hello Microsoft User!');
}
Run Code Online (Sandbox Code Playgroud)

阐释:

/Edge/
Run Code Online (Sandbox Code Playgroud)

一个正则表达式,用于搜索字符串'Edge' - 然后我们根据'navigator.userAgent'属性进行测试


Dav*_*ors 7

useragent字符串包含Edge/12.9600,其中12.9600是我测试的版本号.这与"边缘"模式下Internet Explorer的用户代理字符串完全不同.

用户代理字符串Edge:

Mozilla/5.0(Windows NT 10.0; Win64; x64)AppleWebKit/537.36(KHTML,与Gecko一样)Chrome/42.0.2311.135 Safari/537.36 Edge/12.9600

边缘模式下IE10的用户代理字符串:

Mozilla/5.0(Windows NT 6.3; WOW64; Trident /7.0; .NET4.0E; .NET4.0C; InfoPath.3; .NET CLR 3.5.30729; .NET CLR 2.0.50727; .NET CLR 3.0.30729;平板电脑PC 2.0; rv:11.0)和Gecko一样

因此,在使用javascript时,只需检查用户代理字符串中的"Edge"一词.当您还测试其他浏览器时,请确保先检查Edge,否则会出现误报(例如Chrome或Safari ...)


小智 5

navigator.appVersion.indexOf('Edge') > -1
Run Code Online (Sandbox Code Playgroud)

  • 您能解释一下它的工作原理,以及它比其他解决方案更好吗? (2认同)
  • 我的新版本他们称之为“Edg”而不是“Edge” `navigator.appVersion.indexOf("Edg") > -1` (2认同)

web*_*ogs 5

我认为这是最好的方法,因为上面的方法有问题或无法正常工作。

if (/Edg/.test(navigator.userAgent)) {
  alert("You are using Edge.");
}
Run Code Online (Sandbox Code Playgroud)

if (/Edg/.test(navigator.userAgent)) {
  alert("You are using Edge.");
}
Run Code Online (Sandbox Code Playgroud)
(function getBrowser() {
  //checks for individual browsers
  let chromeCheck =
    /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor);
  let firefoxCheck = /Firefox/.test(navigator.userAgent);
  let ieCheck = /Edg/.test(navigator.userAgent);

  //if/else to check browsers against defined variables
  if (chromeCheck && !ieCheck) {
    isBrowser.textContent = `Yes. It's Chrome!`;
  } else if (firefoxCheck) {
    isBrowser.textContent = `No. This is Firefox.`;
  } else if (ieCheck) {
    isBrowser.textContent = `No. It's Edge.`;
  } else {
    isBrowser.textContent = `We have no clue!`;
  }
})();
Run Code Online (Sandbox Code Playgroud)


Mar*_*her 0

https://msdn.microsoft.com/en-us/library/ms537509%28v=vs.85%29.aspx

尝试一下:

function getInternetExplorerVersion()
// Returns the version of Internet Explorer or a -1
// (indicating the use of another browser).
{
  var rv = -1; // Return value assumes failure.
  if (navigator.appName == 'Microsoft Internet Explorer')
  {
    var ua = navigator.userAgent;
    var re  = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
    if (re.exec(ua) != null)
      rv = parseFloat( RegExp.$1 );
  }
  return rv;
}
function checkVersion()
{
  var msg = "You're not using Internet Explorer.";
  var ver = getInternetExplorerVersion();

  if ( ver > -1 )
  {
    if ( ver >= 8.0 ) 
      msg = "You're using a recent copy of Internet Explorer."
    else
      msg = "You should upgrade your copy of Internet Explorer.";
  }
  alert( msg );
}
Run Code Online (Sandbox Code Playgroud)

将字符串替换Microsoft Internet ExplorerEdge类似的东西。

编辑: 您可以找出用户代理字符串的内容:

alert(navigator.userAgent)
Run Code Online (Sandbox Code Playgroud)

  • 你很有帮助。尽管投反对票的人可能认为这个问题不应该有一个有助于浏览器嗅探的答案。我投了赞成票来反击反对票。 (2认同)

归档时间:

查看次数:

67262 次

最近记录:

7 年,2 月 前