【问题标题】:如何检测浏览器的版本?
【发布时间】:2011-08-20 11:43:18
【问题描述】:

我一直在寻找可以让我检测访问该网站的用户是否使用 Firefox 3 或 4 的代码。我发现的只是检测浏览器类型而不是版本的代码。

如何检测这样的浏览器版本?

【问题讨论】:

标签: javascript browser version browser-detection


【解决方案1】:

基于accepted answer,这是用于检测“Microsoft Edge”的更新

navigator.sayswho= (function(){
    var ua= navigator.userAgent;
    var tem; 
    var M= ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i) || [];
    if(/trident/i.test(M[1])){
        tem=  /\brv[ :]+(\d+)/g.exec(ua) || [];
        return 'IE '+(tem[1] || '');
    }
    if(M[1]=== 'Chrome'){
        tem= ua.match(/\b(OPR|Edg)\/(\d+)/);
        if(tem!= null) return tem.slice(1).join(' ').replace('OPR', 'Opera');
    }
    M= M[2]? [M[1], M[2]]: [navigator.appName, navigator.appVersion, '-?'];
    if((tem= ua.match(/version\/(\d+)/i))!= null) M.splice(1, 1, tem[1]);
    return M.join(' ');
})();

console.log(navigator.sayswho); 

【讨论】:

  • 不要依赖window.navigator.appVersion 属性来返回正确的浏览器版本。已弃用
【解决方案2】:

您可以查看浏览器说什么,并使用该信息记录或测试多个浏览器。

navigator.sayswho= (function(){
    var ua= navigator.userAgent;
    var tem; 
    var M= ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i) || [];
    if(/trident/i.test(M[1])){
        tem=  /\brv[ :]+(\d+)/g.exec(ua) || [];
        return 'IE '+(tem[1] || '');
    }
    if(M[1]=== 'Chrome'){
        tem= ua.match(/\b(OPR|Edge)\/(\d+)/);
        if(tem!= null) return tem.slice(1).join(' ').replace('OPR', 'Opera');
    }
    M= M[2]? [M[1], M[2]]: [navigator.appName, navigator.appVersion, '-?'];
    if((tem= ua.match(/version\/(\d+)/i))!= null) M.splice(1, 1, tem[1]);
    return M.join(' ');
})();

console.log(navigator.sayswho); // outputs: `Chrome 62`

【讨论】:

  • 刚刚发现将浏览器 IE11 降级为 IE10 导航用户代理的严重问题,显示 Mozilla/4.0(兼容;MSIE 7.0;Windows NT 6.1;WOW64;Trident/6.0;SLCC2;.NET CLR 2.0.50727;。 NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3; .NET4.0C; .NET4.0E) 用 trident/6.0 将其 IE7 字符串小心
  • 如果这个答案包括输出示例会很有帮助。我不知道该函数期望什么字符串。
  • 尚未考虑 Edge:tem = ua.match(/\b(OPR|Edge)\/(\d+)/i); if (tem != null) return {name : tem[1] === 'OPR' ? 'Opera' : tem[1], version : tem[2]};
  • 此脚本错误地报告内部 Facebook 浏览器的浏览器 Chrome 版本 4.0(当您在 Android 上的 Facebook 应用程序中单击 Web 链接时启动)。用户代理字符串看起来像:Mozilla/5.0 (Linux; Android 5.0; Nexus 9 Build/LRX21R; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/45.0.2454.95 Safari/537.36 [FB_IAB/FB4A;FBAV/50.0.0.10.54;] 不幸的是,这是一个非常突出的用户代理,所以不能真正忽略它......
  • 有一些库可以做到这一点,即 bowser,作为一般规则,如果没有必要,您不应该重新发明轮子。
【解决方案3】:

这让我得到了 Firefox 的版本,

    let versionNumber = parseInt(window.navigator.userAgent.match(/Firefox\/([0- 
    9]+)\./)[1]);

【讨论】:

    【解决方案4】:

    对于 chromium 浏览器就是这么简单。

    版本:navigator.userAgentData.brands[0].version

    浏览器名称:navigator.userAgentData.brands[0].brand

    【讨论】:

    【解决方案5】:

    为此,您需要检查 navigator.appVersion 或 navigator.userAgent 的值 尝试使用:

    console.log(navigator.appVersion)
    

    【讨论】:

      【解决方案6】:

      我根据我在其他帖子中找到的内容使用了这段 javascript 代码。

      var browserHelper = function () {
          var self = {};
      
          /// IE 6+
          self.isIEBrowser = function () {
              return /*@cc_on!@*/false || !!document.documentMode;
          };
      
          /// Opera 8.0+
          self.isOperaBrowser = function () {
              return (!!window.opr && !!opr.addons)
                  || !!window.opera
                  || navigator.userAgent.indexOf(' OPR/') >= 0;
          };
      
          /// Firefox 1.0+
          self.isFirefoxBrowser = function () {
              return typeof InstallTrigger !== 'undefined';
          };
      
          /// Safari 3.0+
          self.isSafariBrowser = function () {
              return /constructor/i.test(window.HTMLElement)
                  || (function (p) { return p.toString() === "[object SafariRemoteNotification]"; })(!window['safari'] || (typeof safari !== 'undefined' && window['safari'].pushNotification));
          };
      
          /// Edge 20+
          self.isEdgeBrowser = function () {
              return !self.isIEBrowser() && !!window.StyleMedia;
          };
      
          /// Chrome 1 - 87
          self.isChromeBrowser = function () {
              return (!!window.chrome && (!!window.chrome.webstore || !!window.chrome.runtime))
                  || (navigator.userAgent.indexOf("Chrome") > -1) && !self.isOperaBrowser();
          };
      
          /// Edge (based on chromium)
          self.isEdgeChromiumBrowser = function () {
              return self.isChromeBrowser() && (navigator.userAgent.indexOf("Edg") != -1);
          };
      
          /// Blink
          self.isBlinkBasedOnBrowser = function () {
              return (self.isChromeBrowser() || self.isOperaBrowser()) && !!window.CSS;
          };
      
          /// Returns the name of the navigator
          self.browserName = function () {
      
              if (self.isOperaBrowser()) return "Opera";
      
              if (self.isEdgeBrowser()) return "Edge";
      
              if (self.isEdgeChromiumBrowser()) return "Edge (based on chromium)";
      
              if (self.isFirefoxBrowser()) return "Firefox";
      
              if (self.isIEBrowser()) return "Internet Explorer";
      
              if (self.isSafariBrowser()) return "Safari";
      
              if (self.isChromeBrowser()) return "Chrome";
      
              return "Unknown";
          };
          
          return self;
      };
      
      var bName = document.getElementById('browserName');
      bName.innerText = browserHelper().browserName();
      #browserName {
        font-family: Arial, Verdana;
        font-size: 1.2rem;
        color: #ff8000;
        text-align: center;
        border: 2px solid #ff8000;
        border-radius: .5rem;
        padding: .5rem;
        max-width: 25%;
        margin: auto;
      }
      <div id="browserName"></div>

      【讨论】:

        【解决方案7】:

        这是 Fzs2 和 kennebec 对 New Edge Chromium 的更新

        function get_browser() {
            var ua=navigator.userAgent,tem,M=ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i) || []; 
            if(/trident/i.test(M[1])){
                tem=/\brv[ :]+(\d+)/g.exec(ua) || []; 
                return {name:'IE',version:(tem[1]||'')};
                }   
            if(M[1]==='Chrome'){
                tem=ua.match(/\bEdg\/(\d+)/)
                if(tem!=null)   {return {name:'Edge(Chromium)', version:tem[1]};}
                tem=ua.match(/\bOPR\/(\d+)/)
                if(tem!=null)   {return {name:'Opera', version:tem[1]};}
                }   
            M=M[2]? [M[1], M[2]]: [navigator.appName, navigator.appVersion, '-?'];
            if((tem=ua.match(/version\/(\d+)/i))!=null) {M.splice(1,1,tem[1]);}
            return {
              name: M[0],
              version: M[1]
            };
         }
        
        var browser=get_browser(); // browser.name = 'Edge(Chromium)'
                                   // browser.version = '86'
        
        console.log(browser);

        【讨论】:

          【解决方案8】:

          检测浏览器及其版本

          这段代码sn-p是基于MDN的文章。他们提供了有关可用于检测浏览器名称的各种关键字的简要提示。

          我做了一些更改来检测像 EdgeUCBrowser

          这样的浏览器

          getBrowser = () => {
              const userAgent = navigator.userAgent;
              let browser = "unkown";
              // Detect browser name
              browser = (/ucbrowser/i).test(userAgent) ? 'UCBrowser' : browser;
              browser = (/edg/i).test(userAgent) ? 'Edge' : browser;
              browser = (/googlebot/i).test(userAgent) ? 'GoogleBot' : browser;
              browser = (/chromium/i).test(userAgent) ? 'Chromium' : browser;
              browser = (/firefox|fxios/i).test(userAgent) && !(/seamonkey/i).test(userAgent) ? 'Firefox' : browser;
              browser = (/; msie|trident/i).test(userAgent) && !(/ucbrowser/i).test(userAgent) ? 'IE' : browser;
              browser = (/chrome|crios/i).test(userAgent) && !(/opr|opera|chromium|edg|ucbrowser|googlebot/i).test(userAgent) ? 'Chrome' : browser;;
              browser = (/safari/i).test(userAgent) && !(/chromium|edg|ucbrowser|chrome|crios|opr|opera|fxios|firefox/i).test(userAgent) ? 'Safari' : browser;
              browser = (/opr|opera/i).test(userAgent) ? 'Opera' : browser;
          
              // detect browser version
              switch (browser) {
                  case 'UCBrowser': return `${browser}/${browserVersion(userAgent,/(ucbrowser)\/([\d\.]+)/i)}`;
                  case 'Edge': return `${browser}/${browserVersion(userAgent,/(edge|edga|edgios|edg)\/([\d\.]+)/i)}`;
                  case 'GoogleBot': return `${browser}/${browserVersion(userAgent,/(googlebot)\/([\d\.]+)/i)}`;
                  case 'Chromium': return `${browser}/${browserVersion(userAgent,/(chromium)\/([\d\.]+)/i)}`;
                  case 'Firefox': return `${browser}/${browserVersion(userAgent,/(firefox|fxios)\/([\d\.]+)/i)}`;
                  case 'Chrome': return `${browser}/${browserVersion(userAgent,/(chrome|crios)\/([\d\.]+)/i)}`;
                  case 'Safari': return `${browser}/${browserVersion(userAgent,/(safari)\/([\d\.]+)/i)}`;
                  case 'Opera': return `${browser}/${browserVersion(userAgent,/(opera|opr)\/([\d\.]+)/i)}`;
                  case 'IE': const version = browserVersion(userAgent,/(trident)\/([\d\.]+)/i);
                      // IE version is mapped using trident version 
                      // IE/8.0 = Trident/4.0, IE/9.0 = Trident/5.0
                      return version ? `${browser}/${parseFloat(version) + 4.0}` : `${browser}/7.0`;
                  default: return `unknown/0.0.0.0`;
              }
          }
          
          browserVersion = (userAgent,regex) => {
              return userAgent.match(regex) ? userAgent.match(regex)[2] : null;
          }
          
          console.log(getBrowser());

          【讨论】:

            【解决方案9】:

            这是对 Kennebec 答案的改进。

            function get_browser() {
                var ua=navigator.userAgent,tem,M=ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i) || []; 
                if(/trident/i.test(M[1])){
                    tem=/\brv[ :]+(\d+)/g.exec(ua) || []; 
                    return {name:'IE',version:(tem[1]||'')};
                    }   
                if(M[1]==='Chrome'){
                    tem=ua.match(/\bOPR|Edge\/(\d+)/)
                    if(tem!=null)   {return {name:'Opera', version:tem[1]};}
                    }   
                M=M[2]? [M[1], M[2]]: [navigator.appName, navigator.appVersion, '-?'];
                if((tem=ua.match(/version\/(\d+)/i))!=null) {M.splice(1,1,tem[1]);}
                return {
                  name: M[0],
                  version: M[1]
                };
             }
            
            var browser=get_browser(); // browser.name = 'Chrome'
                                       // browser.version = '40'
            
            console.log(browser);

            这样您就可以保护自己免受代码晦涩的影响。

            【讨论】:

            • (某些平台 - 例如 os x - 会为 navigator.userAgent 提供不同的输出,您无法通过 'Opera' 字符串识别 Opera 浏览器,而是使用 'OPR')。
            • get_browser 和 get_browser_version 在“if trident”和“if chrome”条件句中返回不正确的详细信息 if tem!=null
            【解决方案10】:

            navigator.sayswho= (function(){
                var ua= navigator.userAgent, tem, 
                M= ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i) || [];
                if(/trident/i.test(M[1])){
                    tem=  /\brv[ :]+(\d+)/g.exec(ua) || [];
                    return 'IE '+(tem[1] || '');
                }
                if(M[1]=== 'Chrome'){
                    tem= ua.match(/\b(OPR|Edge)\/(\d+)/);
                    if(tem!= null) return tem.slice(1).join(' ').replace('OPR', 'Opera');
                }
                M= M[2]? [M[1], M[2]]: [navigator.appName, navigator.appVersion, '-?'];
                if((tem= ua.match(/version\/(\d+)/i))!= null) M.splice(1, 1, tem[1]);
                return M.join(' ');
            })();
            
            console.log(navigator.sayswho); // outputs: `Chrome 62`

            【讨论】:

              【解决方案11】:

              以下是截至 2019 年 5 月处理浏览器检测的几个著名库。

              Bowser by lancedikson - 3,761★s - 最后更新于 2019 年 5 月 26 日 - 4.8KB

              var result = bowser.getParser(window.navigator.userAgent);
              console.log(result);
              document.write("You are using " + result.parsedResult.browser.name +
                             " v" + result.parsedResult.browser.version + 
                             " on " + result.parsedResult.os.name);
              <script src="https://unpkg.com/bowser@2.4.0/es5.js"></script>

              *支持基于 Chromium 的 Edge


              Platform.js by bestiejs - 2,250★s - 最后更新于 2018 年 10 月 30 日 - 5.9KB

              console.log(platform);
              document.write("You are using " + platform.name +
                             " v" + platform.version + 
                             " on " + platform.os);
              <script src="https://cdnjs.cloudflare.com/ajax/libs/platform/1.3.5/platform.min.js"></script>

              jQuery Browser 来自 gabceb - 504★s - 最后更新于 2015 年 11 月 23 日 - 1.3KB

              console.log($.browser)
              document.write("You are using " + $.browser.name +
                             " v" + $.browser.versionNumber + 
                             " on " + $.browser.platform);
              <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
              <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-browser/0.1.0/jquery.browser.min.js"></script>

              Detect.js (Archived) 由 darcyclarke - 522★s - 最后更新于 2015 年 10 月 26 日 - 2.9KB

              var result = detect.parse(navigator.userAgent);
              console.log(result);
              document.write("You are using " + result.browser.family +
                             " v" + result.browser.version + 
                             " on " + result.os.family);
              &lt;script src="https://cdnjs.cloudflare.com/ajax/libs/Detect.js/2.2.2/detect.min.js"&gt;&lt;/script&gt;

              Browser Detect (Archived) 来自 QuirksMode - 最后更新于 2013 年 11 月 14 日 - 884B

              console.log(BrowserDetect)
              document.write("You are using " + BrowserDetect.browser +
                             " v" + BrowserDetect.version + 
                             " on " + BrowserDetect.OS);
              &lt;script src="https://kylemit.github.io/libraries/libraries/BrowserDetect.js"&gt;&lt;/script&gt;

              值得注意的提及:

              • WhichBrowser - 1,355★s - 最后更新于 2018 年 10 月 2 日
              • Modernizr - 23,397★s - 最后更新于 2019 年 1 月 12 日 - 为了喂饱一匹马,特征检测应该驱动任何 canIuse 风格的问题。浏览器检测实际上只是为各个浏览器提供自定义图像、下载文件或说明。

              进一步阅读

              【讨论】:

                【解决方案12】:

                我想分享我为必须解决的问题编写的这段代码。它在大多数主要浏览器中都经过了测试,对我来说就像一个魅力!

                似乎这段代码与其他答案非常相似,但它进行了修改,以便我可以使用它插入 jquery 中最近错过的浏览器对象,当然它是上述代码的组合,与我所做的小改进:

                (function($, ua){
                
                var M = ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i) || [],
                    tem, 
                    res;
                
                if(/trident/i.test(M[1])){
                    tem = /\brv[ :]+(\d+)/g.exec(ua) || [];
                    res = 'IE ' + (tem[1] || '');
                }
                else if(M[1] === 'Chrome'){
                    tem = ua.match(/\b(OPR|Edge)\/(\d+)/);
                    if(tem != null) 
                        res = tem.slice(1).join(' ').replace('OPR', 'Opera');
                    else
                        res = [M[1], M[2]];
                }
                else {
                    M = M[2]? [M[1], M[2]] : [navigator.appName, navigator.appVersion, '-?'];
                    if((tem = ua.match(/version\/(\d+)/i)) != null) M = M.splice(1, 1, tem[1]);
                    res = M;
                }
                
                res = typeof res === 'string'? res.split(' ') : res;
                
                $.browser = {
                    name: res[0],
                    version: res[1],
                    msie: /msie|ie/i.test(res[0]),
                    firefox: /firefox/i.test(res[0]),
                    opera: /opera/i.test(res[0]),
                    chrome: /chrome/i.test(res[0]),
                    edge: /edge/i.test(res[0])
                }
                
                })(typeof jQuery != 'undefined'? jQuery : window.$, navigator.userAgent);
                
                 console.log($.browser.name, $.browser.version, $.browser.msie); 
                // if IE 11 output is: IE 11 true
                

                【讨论】:

                  【解决方案13】:

                  这里的兼容性比@kennebec sn-p 好;
                  将返回浏览器名称和版本(返回 72 而不是 72.0.3626.96)。

                  在 Safari、Chrome、Opera、Firefox、IE、Edge、UCBrowser 以及移动设备上测试。

                  function browser() {
                      var userAgent = navigator.userAgent,
                          match = userAgent.match(/(opera|chrome|crios|safari|ucbrowser|firefox|msie|trident(?=\/))\/?\s*(\d+)/i) || [],
                          result = {},
                          tem;
                  
                      if (/trident/i.test(match[1])) {
                          tem = /\brv[ :]+(\d+)/g.exec(userAgent) || [];
                          result.name = "Internet Explorer";
                      } else if (match[1] === "Chrome") {
                          tem = userAgent.match(/\b(OPR|Edge)\/(\d+)/);
                  
                          if (tem && tem[1]) {
                              result.name = tem[0].indexOf("Edge") === 0 ? "Edge" : "Opera";
                          }
                      }
                      if (!result.name) {
                          tem = userAgent.match(/version\/(\d+)/i); // iOS support
                          result.name = match[0].replace(/\/.*/, "");
                  
                          if (result.name.indexOf("MSIE") === 0) {
                              result.name = "Internet Explorer";
                          }
                          if (userAgent.match("CriOS")) {
                              result.name = "Chrome";
                          }
                  
                      }
                      if (tem && tem.length) {
                          match[match.length - 1] = tem[tem.length - 1];
                      }
                  
                      result.version = Number(match[match.length - 1]);
                  
                      return result;
                  }
                  

                  【讨论】:

                    【解决方案14】:

                    对于任何使用 Angular 的 PWA 应用程序,您可以在 index.html 的正文部分中放置代码来检查是否支持浏览器 -

                    <body>
                        <div id="browser"></div>
                        <script>
                            var operabrowser = true;
                            operabrowser = (navigator.userAgent.indexOf('Opera Mini') > -1);
                            if (operabrowser) {
                                txt = "<p>Browser not supported use different browser...</p>";
                                document.getElementById("browser").innerHTML = txt;
                            }
                        </script>
                    </body>
                    

                    【讨论】:

                      【解决方案15】:

                      这结合了 kennebec (K) 的答案和 Hermann Ingjaldsson 的 (H) 答案:

                      • 维护原始答案的最小代码。 (K)
                      • 适用于 Microsoft Edge (K)
                      • 扩展导航器对象而不是创建新的变量/对象。 (K)
                      • 将浏览器版本和名称分隔为独立的子对象。 (H)

                       

                      navigator.browserSpecs = (function(){
                          var ua = navigator.userAgent, tem, 
                              M = ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i) || [];
                          if(/trident/i.test(M[1])){
                              tem = /\brv[ :]+(\d+)/g.exec(ua) || [];
                              return {name:'IE',version:(tem[1] || '')};
                          }
                          if(M[1]=== 'Chrome'){
                              tem = ua.match(/\b(OPR|Edge)\/(\d+)/);
                              if(tem != null) return {name:tem[1].replace('OPR', 'Opera'),version:tem[2]};
                          }
                          M = M[2]? [M[1], M[2]]: [navigator.appName, navigator.appVersion, '-?'];
                          if((tem = ua.match(/version\/(\d+)/i))!= null)
                              M.splice(1, 1, tem[1]);
                          return {name:M[0], version:M[1]};
                      })();
                      
                      console.log(navigator.browserSpecs); //Object { name: "Firefox", version: "42" }
                      
                      if (navigator.browserSpecs.name == 'Firefox') {
                          // Do something for Firefox.
                          if (navigator.browserSpecs.version > 42) {
                              // Do something for Firefox versions greater than 42.
                          }
                      }
                      else {
                          // Do something for all other browsers.
                      }
                      

                      【讨论】:

                        【解决方案16】:

                        我用它来获取实际浏览器版本的名称和编号(int):

                        function getInfoBrowser() {
                            var ua = navigator.userAgent, tem,
                            M = ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i) || [];
                            if (/trident/i.test(M[1])) {
                                tem = /\brv[ :]+(\d+)/g.exec(ua) || [];
                                return { name: 'Explorer', version: parseInt((tem[1] || '')) };
                            }
                            if (M[1] === 'Chrome') {
                                tem = ua.match(/\b(OPR|Edge)\/(\d+)/);
                                if (tem != null) { let app = tem.slice(1).toString().split(','); return { name: app[0].replace('OPR', 'Opera'), version: parseInt(app[1]) }; }
                            }
                            M = M[2] ? [M[1], M[2]] : [navigator.appName, navigator.appVersion, '-?'];
                            if ((tem = ua.match(/version\/(\d+)/i)) != null) M.splice(1, 1, tem[1]);
                            return {
                                name: M[0],
                                version: parseInt(M[1])
                            };
                        }
                        
                        function getBrowser(){
                          let info = getInfoBrowser();
                          $("#i-name").html(info.name);
                          $("#i-version").html(info.version);
                        }
                        <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
                        
                        <input type="button" onclick="getBrowser();" value="Get Info Browser"/>
                        <hr/>
                        Name: <span id="i-name"></span><br/>
                        Version: <span id="i-version"></span>

                        这个运行在

                        铬;火狐;苹果浏览器 ; Internet Explorer (>= 9) ;歌剧;边缘

                        对我来说。

                        【讨论】:

                          【解决方案17】:
                          var nVer = navigator.appVersion;
                          var nAgt = navigator.userAgent;
                          var browserName = navigator.appName;
                          var fullVersion = '' + parseFloat(navigator.appVersion);
                          var majorVersion = parseInt(navigator.appVersion, 10);
                          var nameOffset, verOffset, ix;
                          
                          // In Opera 15+, the true version is after "OPR/" 
                          if ((verOffset = nAgt.indexOf("OPR/")) != -1) {
                              browserName = "Opera";
                              fullVersion = nAgt.substring(verOffset + 4);
                          }
                          // In older Opera, the true version is after "Opera" or after "Version"
                          else if ((verOffset = nAgt.indexOf("Opera")) != -1) {
                              browserName = "Opera";
                              fullVersion = nAgt.substring(verOffset + 6);
                              if ((verOffset = nAgt.indexOf("Version")) != -1)
                                  fullVersion = nAgt.substring(verOffset + 8);
                          }
                          // In MSIE, the true version is after "MSIE" in userAgent
                          else if ((verOffset = nAgt.indexOf("MSIE")) != -1) {
                              browserName = "Microsoft Internet Explorer";
                              fullVersion = nAgt.substring(verOffset + 5);
                          }
                          // In Chrome, the true version is after "Chrome" 
                          else if ((verOffset = nAgt.indexOf("Chrome")) != -1) {
                              browserName = "Google Chrome";
                              fullVersion = nAgt.substring(verOffset + 7);
                          }
                          // In Safari, the true version is after "Safari" or after "Version" 
                          else if ((verOffset = nAgt.indexOf("Safari")) != -1) {
                              browserName = "Safari";
                              fullVersion = nAgt.substring(verOffset + 7);
                              if ((verOffset = nAgt.indexOf("Version")) != -1)
                                  fullVersion = nAgt.substring(verOffset + 8);
                          }
                          // In Firefox, the true version is after "Firefox" 
                          else if ((verOffset = nAgt.indexOf("Firefox")) != -1) {
                              browserName = "Mozilla Firefox";
                              fullVersion = nAgt.substring(verOffset + 8);
                          }
                          // In most other browsers, "name/version" is at the end of userAgent 
                          else if ((nameOffset = nAgt.lastIndexOf(' ') + 1) < (verOffset = nAgt.lastIndexOf('/'))) {
                              browserName = nAgt.substring(nameOffset, verOffset);
                              fullVersion = nAgt.substring(verOffset + 1);
                              if (browserName.toLowerCase() == browserName.toUpperCase()) {
                                  browserName = navigator.appName;
                              }
                          }
                          // trim the fullVersion string at semicolon/space if present
                          if ((ix = fullVersion.indexOf(';')) != -1) fullVersion = fullVersion.substring(0, ix);
                          if ((ix = fullVersion.indexOf(' ')) != -1) fullVersion = fullVersion.substring(0, ix);
                          
                          majorVersion = parseInt('' + fullVersion, 10);
                          if (isNaN(majorVersion)) {
                              fullVersion = '' + parseFloat(navigator.appVersion);
                              majorVersion = parseInt(navigator.appVersion, 10);
                          }
                          

                          【讨论】:

                          • 你能把你的代码和代码一起描述一下吗?
                          【解决方案18】:

                          添加我自己的赫尔曼答案的实现。我需要操作系统检测,因此已添加。还包括一些您可能需要 ES5 化的 ES6 代码(因为我们有一个转译器)。

                          detectClient() {
                              let nav = navigator.appVersion,
                                  os = 'unknown',
                                  client = (() => {
                                      let agent = navigator.userAgent,
                                          engine = agent.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i) || [],
                                          build;
                          
                                      if(/trident/i.test(engine[1])){
                                          build = /\brv[ :]+(\d+)/g.exec(agent) || [];
                                          return {browser:'IE', version:(build[1] || '')};
                                      }
                          
                                      if(engine[1] === 'Chrome'){
                                          build = agent.match(/\bOPR\/(\d+)/);
                          
                                          if(build !== null) {
                                              return {browser: 'Opera', version: build[1]};
                                          }
                                      }
                          
                                      engine = engine[2] ? [engine[1], engine[2]] : [navigator.appName, nav, '-?'];
                          
                                      if((build = agent.match(/version\/(\d+)/i)) !== null) {
                                          engine.splice(1, 1, build[1]);
                                      }
                          
                                      return {
                                        browser: engine[0],
                                        version: engine[1]
                                      };
                                  })();
                          
                              switch (true) {
                                  case nav.indexOf('Win') > -1:
                                      os = 'Windows';
                                  break;
                                  case nav.indexOf('Mac') > -1:
                                      os = 'MacOS';
                                  break;
                                  case nav.indexOf('X11') > -1:
                                      os = 'UNIX';
                                  break;
                                  case nav.indexOf('Linux') > -1:
                                      os = 'Linux';
                                  break;
                              }        
                          
                              client.os = os;
                              return client;
                          }
                          

                          返回:Object {browser: "Chrome", version: "50", os: "UNIX"}

                          【讨论】:

                            【解决方案19】:

                            This page 似乎有一个相当不错的 sn-p,它只使用 appString 和 appVersion 属性作为最后的手段,因为它声称它们在某些浏览器中不可靠。 页面代码如下:

                            var nVer = navigator.appVersion;
                            var nAgt = navigator.userAgent;
                            var browserName  = navigator.appName;
                            var fullVersion  = ''+parseFloat(navigator.appVersion); 
                            var majorVersion = parseInt(navigator.appVersion,10);
                            var nameOffset,verOffset,ix;
                            
                            // In Opera 15+, the true version is after "OPR/" 
                            if ((verOffset=nAgt.indexOf("OPR/"))!=-1) {
                             browserName = "Opera";
                             fullVersion = nAgt.substring(verOffset+4);
                            }
                            // In older Opera, the true version is after "Opera" or after "Version"
                            else if ((verOffset=nAgt.indexOf("Opera"))!=-1) {
                             browserName = "Opera";
                             fullVersion = nAgt.substring(verOffset+6);
                             if ((verOffset=nAgt.indexOf("Version"))!=-1) 
                               fullVersion = nAgt.substring(verOffset+8);
                            }
                            // In MSIE, the true version is after "MSIE" in userAgent
                            else if ((verOffset=nAgt.indexOf("MSIE"))!=-1) {
                             browserName = "Microsoft Internet Explorer";
                             fullVersion = nAgt.substring(verOffset+5);
                            }
                            // In Chrome, the true version is after "Chrome" 
                            else if ((verOffset=nAgt.indexOf("Chrome"))!=-1) {
                             browserName = "Chrome";
                             fullVersion = nAgt.substring(verOffset+7);
                            }
                            // In Safari, the true version is after "Safari" or after "Version" 
                            else if ((verOffset=nAgt.indexOf("Safari"))!=-1) {
                             browserName = "Safari";
                             fullVersion = nAgt.substring(verOffset+7);
                             if ((verOffset=nAgt.indexOf("Version"))!=-1) 
                               fullVersion = nAgt.substring(verOffset+8);
                            }
                            // In Firefox, the true version is after "Firefox" 
                            else if ((verOffset=nAgt.indexOf("Firefox"))!=-1) {
                             browserName = "Firefox";
                             fullVersion = nAgt.substring(verOffset+8);
                            }
                            // In most other browsers, "name/version" is at the end of userAgent 
                            else if ( (nameOffset=nAgt.lastIndexOf(' ')+1) < 
                                      (verOffset=nAgt.lastIndexOf('/')) ) 
                            {
                             browserName = nAgt.substring(nameOffset,verOffset);
                             fullVersion = nAgt.substring(verOffset+1);
                             if (browserName.toLowerCase()==browserName.toUpperCase()) {
                              browserName = navigator.appName;
                             }
                            }
                            // trim the fullVersion string at semicolon/space if present
                            if ((ix=fullVersion.indexOf(";"))!=-1)
                               fullVersion=fullVersion.substring(0,ix);
                            if ((ix=fullVersion.indexOf(" "))!=-1)
                               fullVersion=fullVersion.substring(0,ix);
                            
                            majorVersion = parseInt(''+fullVersion,10);
                            if (isNaN(majorVersion)) {
                             fullVersion  = ''+parseFloat(navigator.appVersion); 
                             majorVersion = parseInt(navigator.appVersion,10);
                            }
                            
                            document.write(''
                             +'Browser name  = '+browserName+'<br>'
                             +'Full version  = '+fullVersion+'<br>'
                             +'Major version = '+majorVersion+'<br>'
                             +'navigator.appName = '+navigator.appName+'<br>'
                             +'navigator.userAgent = '+navigator.userAgent+'<br>'
                            )
                            

                            【讨论】:

                              【解决方案20】:

                              bowser JavaScript 库提供此功能。

                              if (bowser.msie && bowser.version <= 6) {
                                alert('Hello China');
                              }
                              

                              似乎保养得很好。

                              【讨论】:

                                【解决方案21】:

                                我一直在为自己寻找解决方案,因为 jQuery 1.9.1 及更高版本已删除 $.browser 功能。我想出了这个对我有用的小功能。 它确实需要一个全局变量(我叫我的_browser)来检查它是哪个浏览器。我写了一个 jsfiddle 来说明它是如何使用的,当然它可以通过为 _browser.foo 添加一个测试来扩展到其他浏览器,其中 foo 是浏览器的名称。我只做了流行的。

                                detectBrowser()

                                _browser = {};
                                
                                function detectBrowser() {
                                  var uagent = navigator.userAgent.toLowerCase(),
                                      match = '';
                                
                                  _browser.chrome  = /webkit/.test(uagent)  && /chrome/.test(uagent)      &&
                                                     !/edge/.test(uagent);
                                
                                  _browser.firefox = /mozilla/.test(uagent) && /firefox/.test(uagent);
                                
                                  _browser.msie    = /msie/.test(uagent)    || /trident/.test(uagent)     ||
                                                     /edge/.test(uagent);
                                
                                  _browser.safari  = /safari/.test(uagent)  && /applewebkit/.test(uagent) &&
                                                     !/chrome/.test(uagent);
                                
                                  _browser.opr     = /mozilla/.test(uagent) && /applewebkit/.test(uagent) &&
                                                     /chrome/.test(uagent)  && /safari/.test(uagent)      &&
                                                     /opr/.test(uagent);
                                
                                  _browser.version = '';
                                
                                  for (x in _browser) {
                                    if (_browser[x]) {
                                
                                      match = uagent.match(
                                                new RegExp("(" + (x === "msie" ? "msie|edge" : x) + ")( |\/)([0-9]+)")
                                              );
                                
                                      if (match) {
                                        _browser.version = match[3];
                                      } else {
                                        match = uagent.match(new RegExp("rv:([0-9]+)"));
                                        _browser.version = match ? match[1] : "";
                                      }
                                      break;
                                    }
                                  }
                                  _browser.opera = _browser.opr;
                                  delete _browser.opr;
                                }
                                

                                要检查当前浏览器是否是 Opera,您会这样做

                                if (_browser.opera) { // Opera specific code }
                                

                                编辑 修正了格式,修正了 IE11 和 Opera/Chrome 的检测,从结果改为 browserResult。现在_browser 键的顺序无关紧要。更新了 jsFiddle 链接。

                                2015/08/11 编辑为 Internet Explorer 12 (EDGE) 添加了新的测试用例,修复了一个小的正则表达式问题。更新了 jsFiddle 链接。

                                【讨论】:

                                • 对于 Windows 10 中的新 IE Edge(又名 Spartan),它显示我的浏览器是 Chrome 42 --- 用户代理字符串:mozilla/5.0 (windows nt 10.0; win64; x64) applewebkit/537.36 ( khtml, 像壁虎) chrome/42.0.2311.135 safari/537.36 edge/12.10240 浏览器是chrome 42
                                • 感谢 @Rulisp 的评论并提供示例 uagent,因为我没有 Edge 或 Win10。从它开始,我已经更新了 jsFiddle 中的代码以反映这一点。如果您想使用您给我的示例 uagent 进行测试,请转到 this fiddle。如果有什么问题,请告诉我。
                                【解决方案22】:

                                我写这个是为了我的需要。

                                它会获取诸如是移动设备还是视网膜显示器等信息

                                try it

                                var nav = {
                                        isMobile:function(){
                                            return (navigator.userAgent.match(/iPhone|iPad|iPod|Android|BlackBerry|Opera Mini|IEMobile/i) != null);
                                        },
                                        isDesktop:function(){
                                            return (navigator.userAgent.match(/iPhone|iPad|iPod|Android|BlackBerry|Opera Mini|IEMobile/i) == null);
                                        },
                                        isAndroid: function() {
                                            return navigator.userAgent.match(/Android/i);
                                        },
                                        isBlackBerry: function() {
                                            return navigator.userAgent.match(/BlackBerry/i);
                                        },
                                        isIOS: function() {
                                            return navigator.userAgent.match(/iPhone|iPad|iPod/i);
                                        },
                                        isOpera: function() {
                                            return navigator.userAgent.match(/Opera Mini/i);
                                        },
                                        isWindows: function() {
                                            return navigator.userAgent.match(/IEMobile/i);
                                        },
                                        isRetina:function(){
                                            return window.devicePixelRatio && window.devicePixelRatio > 1;
                                        },
                                        isIPad:function(){
                                            isIPad = (/ipad/gi).test(navigator.platform);
                                            return isIPad;
                                        },
                                        isLandscape:function(){
                                            if(window.innerHeight < window.innerWidth){
                                                return true;
                                            }
                                            return false;
                                        },
                                        getIOSVersion:function(){
                                            if(this.isIOS()){
                                                var OSVersion = navigator.appVersion.match(/OS (\d+_\d+)/i);
                                                OSVersion = OSVersion[1] ? +OSVersion[1].replace('_', '.') : 0;
                                                return OSVersion;
                                            }
                                            else
                                                return false;
                                        },
                                        isStandAlone:function(){
                                            if(_.is(navigator.standalone))
                                                return navigator.standalone;
                                            return false;
                                        },
                                        isChrome:function(){
                                            var isChrome = (/Chrome/gi).test(navigator.appVersion);
                                            var isSafari = (/Safari/gi).test(navigator.appVersion)
                                            return isChrome && isSafari;
                                        },
                                        isSafari:function(){
                                            var isSafari = (/Safari/gi).test(navigator.appVersion)
                                            var isChrome = (/Chrome/gi).test(navigator.appVersion)
                                            return !isChrome && isSafari;
                                        }
                                }
                                

                                【讨论】:

                                • 注意:不要依赖navigator.appVersion 属性来返回正确的浏览器版本。已弃用
                                【解决方案23】:

                                我根据 Hermann Ingjaldsson 的回答编写了一个版本检测器,但更健壮,它返回一个包含名称/版本数据的对象。它涵盖了主要的浏览器,但我不关心过多的移动浏览器和次要浏览器:

                                function getBrowserData(nav) {
                                    var data = {};
                                
                                    var ua = data.uaString = nav.userAgent;
                                    var browserMatch = ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*([\d\.]+)/i) || [];
                                    if (browserMatch[1]) { browserMatch[1] = browserMatch[1].toLowerCase(); }
                                    var operaMatch = browserMatch[1] === 'chrome';
                                    if (operaMatch) { operaMatch = ua.match(/\bOPR\/([\d\.]+)/); }
                                
                                    if (/trident/i.test(browserMatch[1])) {
                                        var msieMatch = /\brv[ :]+([\d\.]+)/g.exec(ua) || [];
                                        data.name = 'msie';
                                        data.version = msieMatch[1];
                                    }
                                    else if (operaMatch) {
                                        data.name = 'opera';
                                        data.version = operaMatch[1];
                                    }
                                    else if (browserMatch[1] === 'safari') {
                                        var safariVersionMatch = ua.match(/version\/([\d\.]+)/i);
                                        data.name = 'safari';
                                        data.version = safariVersionMatch[1];
                                    }
                                    else {
                                        data.name = browserMatch[1];
                                        data.version = browserMatch[2];
                                    }
                                
                                    var versionParts = [];
                                    if (data.version) {
                                        var versionPartsMatch = data.version.match(/(\d+)/g) || [];
                                        for (var i=0; i < versionPartsMatch.length; i++) {
                                            versionParts.push(versionPartsMatch[i]);
                                        }
                                        if (versionParts.length > 0) { data.majorVersion = versionParts[0]; }
                                    }
                                    data.name = data.name || '(unknown browser name)';
                                    data.version = {
                                        full: data.version || '(unknown full browser version)',
                                        parts: versionParts,
                                        major: versionParts.length > 0 ? versionParts[0] : '(unknown major browser version)'
                                    };
                                
                                    return data;
                                };
                                

                                然后可以这样使用:

                                var brData = getBrowserData(window.navigator || navigator);
                                console.log('name: ' + brData.name);
                                console.log('major version: ' + brData.version.major);
                                // etc.
                                

                                【讨论】:

                                  【解决方案24】:
                                  function BrowserCheck()
                                  {
                                      var N= navigator.appName, ua= navigator.userAgent, tem;
                                      var M= ua.match(/(opera|chrome|safari|firefox|msie|trident)\/?\s*(\.?\d+(\.\d+)*)/i);
                                      if(M && (tem= ua.match(/version\/([\.\d]+)/i))!= null) {M[2]=tem[1];}
                                      M= M? [M[1], M[2]]: [N, navigator.appVersion,'-?'];
                                      return M;
                                  }
                                  

                                  这将返回一个数组,第一个元素是浏览器名称,第二个元素是字符串格式的完整版本号。

                                  【讨论】:

                                    【解决方案25】:
                                    var nVer = navigator.appVersion;
                                    var nAgt = navigator.userAgent;
                                    var browserName  = navigator.appName;
                                    var fullVersion  = ''+parseFloat(navigator.appVersion);
                                    var majorVersion = parseInt(navigator.appVersion,10);
                                    var nameOffset,verOffset,ix;
                                    
                                    // In Opera, the true version is after "Opera" or after "Version"
                                    
                                    if ((verOffset=nAgt.indexOf("Opera"))!=-1) {
                                     browserName = "Opera";
                                     fullVersion = nAgt.substring(verOffset+6);
                                     if ((verOffset=nAgt.indexOf("Version"))!=-1)
                                       fullVersion = nAgt.substring(verOffset+8);
                                    }
                                    // In MSIE, the true version is after "MSIE" in userAgent
                                    
                                    else if ((verOffset=nAgt.indexOf("MSIE"))!=-1) {
                                     browserName = "Microsoft Internet Explorer";
                                     fullVersion = nAgt.substring(verOffset+5);
                                    }
                                    // In Chrome, the true version is after "Chrome"
                                    
                                    else if ((verOffset=nAgt.indexOf("Chrome"))!=-1) {
                                     browserName = "Chrome";
                                     fullVersion = nAgt.substring(verOffset+7);
                                    }
                                    // In Safari, the true version is after "Safari" or after "Version"
                                    
                                    else if ((verOffset=nAgt.indexOf("Safari"))!=-1) {
                                     browserName = "Safari";
                                     fullVersion = nAgt.substring(verOffset+7);
                                     if ((verOffset=nAgt.indexOf("Version"))!=-1)
                                       fullVersion = nAgt.substring(verOffset+8);
                                    }
                                    // In Firefox, the true version is after "Firefox"
                                    
                                    else if ((verOffset=nAgt.indexOf("Firefox"))!=-1) {
                                     browserName = "Firefox";
                                     fullVersion = nAgt.substring(verOffset+8);
                                    }
                                    // In most other browsers, "name/version" is at the end of userAgent
                                    
                                    else if ( (nameOffset=nAgt.lastIndexOf(' ')+1) <
                                              (verOffset=nAgt.lastIndexOf('/')) )
                                    {
                                     browserName = nAgt.substring(nameOffset,verOffset);
                                     fullVersion = nAgt.substring(verOffset+1);
                                     if (browserName.toLowerCase()==browserName.toUpperCase()) {
                                      browserName = navigator.appName;
                                     }
                                    }
                                    
                                    // trim the fullVersion string at semicolon/space if present
                                    
                                    if ((ix=fullVersion.indexOf(";"))!=-1)
                                       fullVersion=fullVersion.substring(0,ix);
                                    if ((ix=fullVersion.indexOf(" "))!=-1)
                                       fullVersion=fullVersion.substring(0,ix);
                                    
                                    majorVersion = parseInt(''+fullVersion,10);
                                    if (isNaN(majorVersion)) {
                                     fullVersion  = ''+parseFloat(navigator.appVersion);
                                     majorVersion = parseInt(navigator.appVersion,10);
                                    }
                                    
                                    document.write(''
                                     +'Browser name  = '+browserName+'<br>'
                                     +'Full version  = '+fullVersion+'<br>'
                                     +'Major version = '+majorVersion+'<br>'
                                     +'navigator.appName = '+navigator.appName+'<br>'
                                     +'navigator.userAgent = '+navigator.userAgent+'<br>'
                                    )
                                    

                                    在这里查看演示..http://jsfiddle.net/hw4jM/3/

                                    【讨论】:

                                      【解决方案26】:

                                      jQuery 可以很好地处理这个问题 (jQuery.browser)

                                      var ua = $.browser;
                                      if ( ua.mozilla && ua.version.slice(0,3) == "1.9" ) {
                                          alert( "Do stuff for firefox 3" );
                                      }
                                      

                                      编辑:正如 Joshua 在下面的评论中所写,自 1.9 版以来,jQuery 不再支持 jQuery.browser 属性(请阅读 jQuery 1.9 release notes 了解更多详细信息)。 jQuery 开发团队 recommends 使用更完整的方法,例如使用 Modernizr 库调整 UI。

                                      【讨论】:

                                      • jQuery 1.9 已经移除了 $.browser 支持,所以这不再是一个选项。
                                      • 约书亚 - 是的,你是对的;至少他们留下了 jQuery.support 属性来检测浏览器对某些功能的支持(但我不确定这是否是最初问题的情况)
                                      【解决方案27】:

                                      我在 ASP 代码中编写了一个脚本来检测浏览器、浏览器版本、操作系统和操作系统版本。 我在 ASP 中这样做的原因是因为我想将数据存储在日志数据库中。 所以我不得不检测浏览器服务器端。

                                      代码如下:

                                      on error resume next
                                      ua = lcase(Request.ServerVariables("HTTP_USER_AGENT"))
                                      moz = instr(ua,"mozilla")  
                                      ffx = instr(ua,"firefox")  
                                      saf = instr(ua,"safari")
                                      crm = instr(ua,"chrome") 
                                      max = instr(ua,"maxthon") 
                                      opr = instr(ua,"opera")
                                      ie4 = instr(ua,"msie 4") 
                                      ie5 = instr(ua,"msie 5") 
                                      ie6 = instr(ua,"msie 6") 
                                      ie7 = instr(ua,"msie 7") 
                                      ie8 = instr(ua,"trident/4.0")
                                      ie9 = instr(ua,"trident/5.0")
                                      
                                      if moz>0 then 
                                          BrowserType = "Mozilla"
                                          BrVer = mid(ua,moz+8,(instr(moz,ua," ")-(moz+8)))
                                      end if
                                      if ffx>0 then 
                                          BrowserType = "FireFox"
                                          BrVer = mid(ua,ffx+8)
                                      end if
                                      if saf>0 then 
                                          BrowserType = "Safari"
                                          BrVerPlass = instr(ua,"version")
                                          BrVer = mid(ua,BrVerPlass+8,(instr(BrVerPlass,ua," ")-(BrVerPlass+8)))
                                      end if
                                      if crm>0 then 
                                          BrowserType = "Chrome"
                                          BrVer = mid(ua,crm+7,(instr(crm,ua," ")-(crm+7)))
                                      end if
                                      if max>0 then 
                                          BrowserType = "Maxthon"
                                          BrVer = mid(ua,max+8,(instr(max,ua," ")-(max+8)))
                                      end if
                                      if opr>0 then 
                                          BrowserType = "Opera"
                                          BrVerPlass = instr(ua,"presto")
                                          BrVer = mid(ua,BrVerPlass+7,(instr(BrVerPlass,ua," ")-(BrVerPlass+7)))
                                      end if
                                      if ie4>0 then 
                                          BrowserType = "Internet Explorer"
                                          BrVer = "4"
                                      end if
                                      if ie5>0 then 
                                          BrowserType = "Internet Explorer"
                                          BrVer = "5"
                                      end if
                                      if ie6>0 then 
                                          BrowserType = "Internet Explorer"
                                          BrVer = "6"
                                      end if
                                      if ie7>0 then 
                                          BrowserType = "Internet Explorer"
                                          BrVer = "7"
                                      end if
                                      if ie8>0 then 
                                          BrowserType = "Internet Explorer"
                                          BrVer = "8"
                                          if ie7>0 then BrVer = BrVer & " (in IE7 compability mode)"
                                      end if
                                      if ie9>0 then 
                                          BrowserType = "Internet Explorer"
                                          BrVer = "9"
                                          if ie7>0 then BrVer = BrVer & " (in IE7 compability mode)"
                                          if ie8>0 then BrVer = BrVer & " (in IE8 compability mode)"
                                      end if
                                      
                                      OSSel = mid(ua,instr(ua,"(")+1,(instr(ua,";")-instr(ua,"("))-1)
                                      OSver = mid(ua,instr(ua,";")+1,(instr(ua,")")-instr(ua,";"))-1)
                                      
                                      if BrowserType = "Internet Explorer" then
                                          OSStart = instr(ua,";")
                                          OSStart = instr(OSStart+1,ua,";")        
                                          OSStopp = instr(OSStart+1,ua,";")
                                          OSsel = mid(ua,OSStart+2,(OSStopp-OSStart)-2)
                                      end if
                                      
                                          Select case OSsel
                                              case "windows nt 6.1"
                                                  OS = "Windows"
                                                  OSver = "7"
                                              case "windows nt 6.0"
                                                  OS = "Windows"
                                                  OSver = "Vista"
                                              case "windows nt 5.2"
                                                  OS = "Windows"
                                                  OSver = "Srv 2003 / XP x64"
                                              case "windows nt 5.1"
                                                  OS = "Windows"
                                                  OSver = "XP"
                                              case else
                                                  OS = OSSel
                                          End select
                                      
                                      Response.write "<br>" & ua & "<br>" & BrowserType & "<br>" & BrVer & "<br>" & OS & "<br>" & OSver & "<br>"
                                      
                                      'Use the variables here for whatever you need........
                                      

                                      【讨论】:

                                        【解决方案28】:
                                        var ua = navigator.userAgent;
                                        
                                        if (/Firefox\//.test(ua))
                                           var Firefox = /Firefox\/([0-9\.A-z]+)/.exec(ua)[1];
                                        

                                        【讨论】:

                                          【解决方案29】:

                                          使用这个:http://www.quirksmode.org/js/detect.html

                                          alert(BrowserDetect.browser); // will say "Firefox"
                                          alert(BrowserDetect.version); // will say "3" or "4"
                                          

                                          【讨论】:

                                          • 过时的参考,不再支持-"这个页面曾经包含我自己的浏览器检测脚本,但我发现我没有足够的时间来更新它。所以我把它删除了。"
                                          【解决方案30】:

                                          在纯 Javascript 中,您可以在 navigator.userAgent 上进行 RegExp 匹配以查找 Firefox 版本:

                                          var uMatch = navigator.userAgent.match(/Firefox\/(.*)$/),
                                              ffVersion;
                                          if (uMatch && uMatch.length > 1) {
                                              ffVersion = uMatch[1];
                                          }
                                          

                                          如果不是 Firefox 浏览器,ffVersion 将是 undefined

                                          See working example →

                                          【讨论】:

                                            猜你喜欢
                                            • 1970-01-01
                                            • 2016-03-21
                                            • 1970-01-01
                                            • 2019-04-29
                                            • 2011-03-10
                                            • 2014-12-28
                                            • 1970-01-01
                                            • 2011-08-12
                                            • 1970-01-01
                                            相关资源
                                            最近更新 更多