【问题标题】:Detect full version internet explorer with javascript?使用 javascript 检测完整版 Internet Explorer?
【发布时间】:2012-01-07 23:02:29
【问题描述】:

是否可以检测到完整版的Internet Explorer。

navigator.appVersion

navigator.appVersion 只给出主要版本,例如 9.0 但它没有显示 9.0.8112.1642...

【问题讨论】:

  • 我不认为只有 JavaScript。可能必须使用 ActiveX 控件之类的东西并从注册表中读取它,因为这是我知道它的唯一存储位置,但我可能是错的
  • 这会很不安全,不是吗?如果您能收集到准确的版本,您就可以轻松针对已知漏洞进行攻击。
  • "ActiveX 控件并从注册表中读取它" - 如何?

标签: javascript


【解决方案1】:

很遗憾,您无法访问 JavaScript 中的 IE 内部版本号。

【讨论】:

    【解决方案2】:

    下面有一个解决方案,但仅适用于 32 位版本的 Windows: http://www.pinlady.net/PluginDetect/IE/

    var e, obj = document.createElement("div"), 
        verIEfull = null; // Full IE version [string/null]
    
    try{ 
        obj.style.behavior = "url(#default#clientcaps)";
    
        verIEfull = obj.getComponentVersion("{89820200-ECBD-11CF-8B85-00AA005B4383}","componentid").replace(/,/g,".");
    }catch(e){};
    

    【讨论】:

      【解决方案3】:

      来自microsoft development website

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

      【讨论】:

      • navigator.appVersion 相比,这并没有提供更多信息,OP 已经说过不是他想要的。
      【解决方案4】:
       navigator.userAgent;
      

      Mozilla/4.0(兼容;MSIE 8.0;Windows NT 5.1;Trident/4.0;.NET CLR 1.1.4322;.NET CLR 2.0.50727;.NET CLR 3.0.4506.2152;.NET CLR 3.5.30729;InfoPath。 2)

      一种可能性是将 .NET 版本与 IE 次要版本进行比较,如果我们在 microsoft IE 文档中找到该表。

      【讨论】:

      • “一种可能性是将 .NET 版本与 IE 次要版本进行比较,如果我们在 microsoft IE 文档中找到该表的话。” - 我该怎么做?
      【解决方案5】:

      我会这样做:

      var IEVersion = 0;
      if( window.attachEvent && /MSIE ([\d\.]+)/.exec(navigator.appVersion) ){
          IEVersion = parseInt( RegExp.$1 );
      }
      

      它很紧凑,通过检查事件模型实际上是 IE 首先来躲避欺骗的 UserAgent 字符串:

      【讨论】:

      • 也不提供完整版。不比:navigator.appVersion
      猜你喜欢
      • 1970-01-01
      • 2023-03-25
      • 2016-02-14
      • 2018-04-01
      • 2015-05-29
      • 2015-10-23
      • 2019-11-20
      相关资源
      最近更新 更多