小编典典

如何检测IE11?

all

当我想检测 IE 时,我使用以下代码:

function getInternetExplorerVersion()
{
  var rv = -1;
  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 )
  {
    msg = "You are using IE " + ver;
  }
  alert( msg );
}

但是 IE11 正在返回“您没有使用 Internet Explorer”。我怎样才能检测到它?


阅读 119

收藏
2022-06-18

共1个答案

小编典典

IE11 不再报告为MSIE,根据此更改列表,它是有意避免错误检测的。

如果您 真的 想知道它是 IE,您可以做的是检测Trident/用户代理中的字符串 if navigator.appNamereturn
Netscape,例如(未测试的);

function getInternetExplorerVersion()

{

  var rv = -1;

  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 );

  }

  else if (navigator.appName == 'Netscape')

  {

    var ua = navigator.userAgent;

    var re  = new RegExp("Trident/.*rv:([0-9]{1,}[\\.0-9]{0,})");

    if (re.exec(ua) != null)

      rv = parseFloat( RegExp.$1 );

  }

  return rv;

}



console.log('IE version:', getInternetExplorerVersion());

请注意,IE11 (afaik) 仍处于预览阶段,用户代理可能会在发布前更改。

2022-06-18