JavaScript中的浏览器检测?

如何确定使用JavaScript的确切浏览器和版本?

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(' '); })(); 

顾名思义,这会告诉你浏览器提供的名字和版本号。

在多个浏览器上testing新代码时,对sortingtesting和错误结果很方便。

我build议使用微小的JavaScript库Bowser,是的没有r。 它是基于navigator.userAgent和相当不错的testing,包括iphone,android等所有浏览器。

https://github.com/ded/bowser

你可以简单地说:

 if (bowser.msie && bowser.version <= 6) { alert('Hello IE'); } else if (bowser.firefox){ alert('Hello Foxy'); } else if (bowser.chrome){ alert('Hello Chrome'); } else if (bowser.safari){ alert('Hello Safari'); } else if(bowser.iphone || bowser.android){ alert('Hello mobile'); } 

这是我写信给客户的信息

 var ua = navigator.userAgent.toLowerCase(); var check = function(r) { return r.test(ua); }; var DOC = document; var isStrict = DOC.compatMode == "CSS1Compat"; var isOpera = check(/opera/); var isChrome = check(/chrome/); var isWebKit = check(/webkit/); var isSafari = !isChrome && check(/safari/); var isSafari2 = isSafari && check(/applewebkit\/4/); // unique to // Safari 2 var isSafari3 = isSafari && check(/version\/3/); var isSafari4 = isSafari && check(/version\/4/); var isIE = !isOpera && check(/msie/); var isIE7 = isIE && check(/msie 7/); var isIE8 = isIE && check(/msie 8/); var isIE6 = isIE && !isIE7 && !isIE8; var isGecko = !isWebKit && check(/gecko/); var isGecko2 = isGecko && check(/rv:1\.8/); var isGecko3 = isGecko && check(/rv:1\.9/); var isBorderBox = isIE && !isStrict; var isWindows = check(/windows|win32/); var isMac = check(/macintosh|mac os x/); var isAir = check(/adobeair/); var isLinux = check(/linux/); var isSecure = /^https/i.test(window.location.protocol); var isIE7InIE8 = isIE7 && DOC.documentMode == 7; var jsType = '', browserType = '', browserVersion = '', osName = ''; var ua = navigator.userAgent.toLowerCase(); var check = function(r) { return r.test(ua); }; if(isWindows){ osName = 'Windows'; if(check(/windows nt/)){ var start = ua.indexOf('windows nt'); var end = ua.indexOf(';', start); osName = ua.substring(start, end); } } else { osName = isMac ? 'Mac' : isLinux ? 'Linux' : 'Other'; } if(isIE){ browserType = 'IE'; jsType = 'IE'; var versionStart = ua.indexOf('msie') + 5; var versionEnd = ua.indexOf(';', versionStart); browserVersion = ua.substring(versionStart, versionEnd); jsType = isIE6 ? 'IE6' : isIE7 ? 'IE7' : isIE8 ? 'IE8' : 'IE'; } else if (isGecko){ var isFF = check(/firefox/); browserType = isFF ? 'Firefox' : 'Others';; jsType = isGecko2 ? 'Gecko2' : isGecko3 ? 'Gecko3' : 'Gecko'; if(isFF){ var versionStart = ua.indexOf('firefox') + 8; var versionEnd = ua.indexOf(' ', versionStart); if(versionEnd == -1){ versionEnd = ua.length; } browserVersion = ua.substring(versionStart, versionEnd); } } else if(isChrome){ browserType = 'Chrome'; jsType = isWebKit ? 'Web Kit' : 'Other'; var versionStart = ua.indexOf('chrome') + 7; var versionEnd = ua.indexOf(' ', versionStart); browserVersion = ua.substring(versionStart, versionEnd); }else{ browserType = isOpera ? 'Opera' : isSafari ? 'Safari' : ''; } 

以下是2016年如何检测浏览器,包括Microsoft Edge,Safari 10和Blink的检测:

 // Opera 8.0+ (UA detection to detect Blink/v8-powered Opera) isOpera = !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0; // Firefox 1.0+ isFirefox = typeof InstallTrigger !== 'undefined'; // Safari 3.0+ isSafari = /constructor/i.test(window.HTMLElement) || (function (p) { return p.toString() === "[object SafariRemoteNotification]"; })(!window['safari'] || safari.pushNotification); // Internet Explorer 6-11 isIE = /*@cc_on!@*/false || !!document.documentMode; // Edge 20+ isEdge = !isIE && !!window.StyleMedia; // Chrome 1+ isChrome = !!window.chrome && !!window.chrome.webstore; // Blink engine detection isBlink = (isChrome || isOpera) && !!window.CSS; 

这种方法的好处在于它依赖于浏览器引擎属性,所以它甚至涵盖衍生的浏览器,比如Yandex或者Vivaldi,这些浏览器实际上与他们使用的主要浏览器兼容。 Opera依赖于用户代理嗅探,但是现在(即版本15以上)甚至Opera本身只是Blink的shell。

尽可能避免浏览器特定的代码通常是最好的。 JQuery $.support属性可用于检测对特定function的支持,而不是依赖于浏览器名称和版本。

以Opera为例,你可以伪造一个Internet Explorer或者firefox实例。

替代文字

JQuery.support的详细描述可以在这里find: http ://api.jquery.com/jQuery.support/

现在根据jQuery已弃用。

我们强烈build议使用诸如Modernizr之类的外部库,而不是依赖jQuery.support属性。

在对网站进行编码时,我总是确保,非导航用户也可以访问导航等基本function。 这可能是讨论的对象,如果主页面向特定的观众,可以忽略。

这告诉你关于你的浏览器和它的版本的所有细节。

 <!DOCTYPE html> <html> <body> <div id="example"></div> <script> txt = "<p>Browser CodeName: " + navigator.appCodeName + "</p>"; txt+= "<p>Browser Name: " + navigator.appName + "</p>"; txt+= "<p>Browser Version: " + navigator.appVersion + "</p>"; txt+= "<p>Cookies Enabled: " + navigator.cookieEnabled + "</p>"; txt+= "<p>Platform: " + navigator.platform + "</p>"; txt+= "<p>User-agent header: " + navigator.userAgent + "</p>"; txt+= "<p>User-agent language: " + navigator.systemLanguage + "</p>"; document.getElementById("example").innerHTML=txt; </script> </body> </html> 

关于networking浏览器的所有信息都包含在导航器对象中。 名字和版本在那里。

 var appname = window.navigator.appName; 

来源: JavaScript浏览器检测

 //Copy and paste this into your code/text editor, and try it //Before you use this to fix compatability bugs, it's best to try inform the browser provider that you have found a bug and there latest browser may not be up to date with the current web standards //Since none of the browsers use the browser identification system properly you need to do something a bit like this //Write browser identification document.write(navigator.userAgent + "<br>") //Detect browser and write the corresponding name if (navigator.userAgent.search("MSIE") >= 0){ document.write('"MS Internet Explorer '); var position = navigator.userAgent.search("MSIE") + 5; var end = navigator.userAgent.search("; Windows"); var version = navigator.userAgent.substring(position,end); document.write(version + '"'); } else if (navigator.userAgent.search("Chrome") >= 0){ document.write('"Google Chrome ');// For some reason in the browser identification Chrome contains the word "Safari" so when detecting for Safari you need to include Not Chrome var position = navigator.userAgent.search("Chrome") + 7; var end = navigator.userAgent.search(" Safari"); var version = navigator.userAgent.substring(position,end); document.write(version + '"'); } else if (navigator.userAgent.search("Firefox") >= 0){ document.write('"Mozilla Firefox '); var position = navigator.userAgent.search("Firefox") + 8; var version = navigator.userAgent.substring(position); document.write(version + '"'); } else if (navigator.userAgent.search("Safari") >= 0 && navigator.userAgent.search("Chrome") < 0){//<< Here document.write('"Apple Safari '); var position = navigator.userAgent.search("Version") + 8; var end = navigator.userAgent.search(" Safari"); var version = navigator.userAgent.substring(position,end); document.write(version + '"'); } else if (navigator.userAgent.search("Opera") >= 0){ document.write('"Opera '); var position = navigator.userAgent.search("Version") + 8; var version = navigator.userAgent.substring(position); document.write(version + '"'); } else{ document.write('"Other"'); } //Use w3schools research the `search()` method as other methods are availible 

由于Internet Explorer 11(IE11 +)出来,并没有使用MSIE的标签名称,我想出了一个旧的检测function的差异:

 navigator.sayswho= (function(){ var N= navigator.appName, ua= navigator.userAgent, tem; // if IE11+ if (new RegExp("Trident/.*rv:([0-9]{1,}[\.0-9]{0,})").exec(ua) !== null) { var M= ["Internet Explorer"]; if(M && (tem= ua.match(/rv:([0-9]{1,}[\.0-9]{0,})/))!= null) M[2]= tem[1]; M= M? [M[0], M[2]]: [N, navigator.appVersion,'-?']; return M; } var M= ua.match(/(opera|chrome|safari|firefox|msie)\/?\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; })(); 

不幸的是,IE11的navigator.userAgent不再有MSIE

 Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; OfficeLiveConnector.1.5; OfficeLivePatch.1.3; .NET4.0C; BRI/2; BOIE9;ENUS; rv:11.0) like Gecko 

至于为什么你想知道你正在使用哪个浏览器,这是因为每个浏览器都有它自己的一组错误,并且最终实现浏览器和特定于版本的解决方法,或者告诉用户使用不同的浏览器!

 var browser = navigator.appName; var version = navigator.appVersion; 

但是请注意,两者不一定会反映真相。 许多浏览器可以设置为其他浏览器的屏蔽。 所以,例如,你不能总是确定一个用户实际上是用IE6浏览还是用假装为IE6的Opera浏览。

这个小图书馆可能会帮助你。 但请注意,浏览器检测并不总是解决scheme。

这里是我如何为Internet Explorer自定义CSS:

在我的JavaScript文件中:

 function isIE () { var myNav = navigator.userAgent.toLowerCase(); return (myNav.indexOf('msie') != -1) ? parseInt(myNav.split('msie')[1]) : false; } jQuery(document).ready(function(){ if(var_isIE){ if(var_isIE == 10){ jQuery("html").addClass("ie10"); } if(var_isIE == 8){ jQuery("html").addClass("ie8"); // you can also call here some function to disable things that //are not supported in IE, or override browser default styles. } } }); 

然后在我的CSS文件中,定义每个不同的风格:

 .ie10 .some-class span{ ....... } .ie8 .some-class span{ ....... } 

如果你想要一个返回浏览器和版本的函数,这里是对原始答案的改进:

 navigator.browserInfo = ( function() { var browser = ''; var version = ''; var idString = ''; var ua = navigator.userAgent; var tem = []; var M = ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i); //IE will be identified as 'Trident' and a different version number. The name must be corrected to 'Internet Explorer' and the correct version identified. //ie correction if(/trident/i.test(M[1])) { tem = /\brv[ :]+(\d+.?\d*)/g.exec(ua) || []; browser = 'Internet Explorer'; version = tem[1]; } //firefox else if(/firefox/i.test(M[1])) { tem = /\brv[ :]+(\d+.?\d*)/g.exec(ua) || []; browser = 'Firefox'; version = tem[1]; } //safari else if(/safari/i.test(M[1])) { tem = ua.match(/\bVersion\/(\d+.?\d*\s*\w+)/); browser = 'Safari'; version = tem[1]; } //If 'Chrome' is found, it may be another browser. else if(M[1] === 'Chrome') { //opera var temOpr = ua.match(/\b(OPR)\/(\d+.?\d*.?\d*.?\d*)/); //edge var temEdge = ua.match(/\b(Edge)\/(\d+.?\d*)/); //chrome var temChrome = ua.match(/\b(Chrome)\/(\d+.?\d*.?\d*.?\d*)/); //a genuine 'Chrome' reading will result from ONLY temChrome not being null. var genuineChrome = temOpr == null && temEdge == null && temChrome != null; if(temOpr != null) { browser = temOpr[1].replace('OPR', 'Opera'); version = temOpr[2]; } if(temEdge != null) { browser = temEdge[1]; version = temEdge[2]; } if(genuineChrome) { browser = temChrome[1]; version = temChrome[2]; } } //There will be some odd balls, so if you wish to support those browsers, add functionality to display those browsers as well. if(browser == '' || version == '') { idString = 'We couldn\'t find your browser, but you can still use the site'; } else { idString = browser + ' version ' + version; } alert('Your browser is ' + idString); //store the type of browser locally if(typeof(Storage) !== "undefined") { //Store localStorage.setItem('browser', browser); localStorage.setItem('version', version); } else { alert('local storage not available'); } } )(); 

有了这个,它也将结果存储在本地,所以这个检查并不是每次都需要运行。

你可以使用jQuery库来检测浏览器版本。

例:

jQuery.browser.version

但是,这只有在使用jQuery的其他function时才有意义。 添加整个库只是为了检测浏览器似乎对我来说是过度的。

更多信息: http //api.jquery.com/jQuery.browser/

(你必须向下滚动一下)

  var isOpera = !!window.opera || navigator.userAgent.indexOf('Opera') >= 0; // Opera 8.0+ (UA detection to detect Blink/v8-powered Opera) var isFirefox = typeof InstallTrigger !== 'undefined'; // Firefox 1.0+ var isSafari = Object.prototype.toString.call(window.HTMLElement).indexOf('Constructor') > 0; // At least Safari 3+: "[object HTMLElementConstructor]" var isChrome = !!window.chrome; // Chrome 1+ var isIE = /*@cc_on!@*/false; 

您可以阅读更多如何检测Safari,Chrome,IE,Firefox和Opera浏览器?

您可以扫描用户代理以查找浏览器名称,而不是对networking浏览器进行硬编码。

 navigator.userAgent.split(')').reverse()[0].match(/(?!Gecko|Version|[A-Za-z]+?Web[Kk]it)[AZ][az]+/g)[0] 

我已经在Safari,Chrome和Firefox上testing过了。 如果您发现这在浏览器上不起作用,请告诉我。

  • Safari浏览器: "Safari"
  • Chrome: "Chrome"
  • Firefox: "Firefox"

你甚至可以修改这个来获得浏览器的版本,如果你想。 请注意有更好的方法来获取浏览器版本

 navigator.userAgent.split(')').reverse()[0].match(/(?!Gecko|Version|[A-Za-z]+?Web[Kk]it)[AZ][az]+\/[\d.]+/g)[0].split('/') 

示例输出:

 Firefox/39.0 

我知道我对这个问题迟到了,但是我想我会把这些片段放在这里。 这里的很多答案都是可以的,正如有人指出的那样,通常最好使用feature detection而不是依赖于userAgentstring。 但是,如果您要走这条路线,我写了一个完整的代码片段,以及一个替代的jQuery实现来replacedepricated $.browser


香草JS

我的第一个片段只是向browser对象添加了四个属性: browserversionmobilewebkit

的jsfiddle

  • GitHub上

 /** navigator [extended] * Simply extends Browsers navigator Object to include browser name, version number, and mobile type (if available). * * @property {String} browser The name of the browser. * @property {Double} version The current Browser version number. * @property {String|Boolean} mobile Will be `false` if is not found to be mobile device. Else, will be best guess Name of Mobile Device (not to be confused with browser name) * @property {Boolean} webkit If is webkit or not. */ ;(function(){function c(){try{switch(!0){case /MSIE|Trident/i.test(navigator.userAgent):return"MSIE";case /Chrome/.test(navigator.userAgent):return"Chrome";case /Opera/.test(navigator.userAgent):return"Opera";case /Kindle|Silk|KFTT|KFOT|KFJWA|KFJWI|KFSOWI|KFTHWA|KFTHWI|KFAPWA|KFAPWI/i.test(navigator.userAgent):return/Silk/i.test(navigator.userAgent)?"Silk":"Kindle";case /BlackBerry/.test(navigator.userAgent):return"BlackBerry";case /PlayBook/.test(navigator.userAgent):return"PlayBook";case /BB[0-9]{1,}; Touch/.test(navigator.userAgent):return"Blackberry"; case /Android/.test(navigator.userAgent):return"Android";case /Safari/.test(navigator.userAgent):return"Safari";case /Firefox/.test(navigator.userAgent):return"Mozilla";case /Nokia/.test(navigator.userAgent):return"Nokia"}}catch(a){console.debug("ERROR:setBrowser\t",a)}}function d(){try{switch(!0){case /Sony[^ ]*/i.test(navigator.userAgent):return"Sony";case /RIM Tablet/i.test(navigator.userAgent):return"RIM Tablet";case /BlackBerry/i.test(navigator.userAgent):return"BlackBerry";case /iPhone/i.test(navigator.userAgent):return"iPhone"; case /iPad/i.test(navigator.userAgent):return"iPad";case /iPod/i.test(navigator.userAgent):return"iPod";case /Opera Mini/i.test(navigator.userAgent):return"Opera Mini";case /IEMobile/i.test(navigator.userAgent):return"IEMobile";case /BB[0-9]{1,}; Touch/i.test(navigator.userAgent):return"BlackBerry";case /Nokia/i.test(navigator.userAgent):return"Nokia";case /Android/i.test(navigator.userAgent):return"Android"}}catch(a){console.debug("ERROR:setMobile\t",a)}return!1}function e(){try{switch(!0){case /MSIE|Trident/i.test(navigator.userAgent):return/Trident/i.test(navigator.userAgent)&& /rv:([0-9]{1,}[\.0-9]{0,})/.test(navigator.userAgent)?parseFloat(navigator.userAgent.match(/rv:([0-9]{1,}[\.0-9]{0,})/)[1].replace(/[^0-9\.]/g,"")):/MSIE/i.test(navigator.userAgent)&&0<parseFloat(navigator.userAgent.split("MSIE")[1].replace(/[^0-9\.]/g,""))?parseFloat(navigator.userAgent.split("MSIE")[1].replace(/[^0-9\.]/g,"")):"Edge";case /Chrome/.test(navigator.userAgent):return parseFloat(navigator.userAgent.split("Chrome/")[1].split("Safari")[0].replace(/[^0-9\.]/g,""));case /Opera/.test(navigator.userAgent):return parseFloat(navigator.userAgent.split("Version/")[1].replace(/[^0-9\.]/g, ""));case /Kindle|Silk|KFTT|KFOT|KFJWA|KFJWI|KFSOWI|KFTHWA|KFTHWI|KFAPWA|KFAPWI/i.test(navigator.userAgent):if(/Silk/i.test(navigator.userAgent))return parseFloat(navigator.userAgent.split("Silk/")[1].split("Safari")[0].replace(/[^0-9\.]/g,""));if(/Kindle/i.test(navigator.userAgent)&&/Version/i.test(navigator.userAgent))return parseFloat(navigator.userAgent.split("Version/")[1].split("Safari")[0].replace(/[^0-9\.]/g,""));case /BlackBerry/.test(navigator.userAgent):return parseFloat(navigator.userAgent.split("/")[1].replace(/[^0-9\.]/g, ""));case /PlayBook/.test(navigator.userAgent):case /BB[0-9]{1,}; Touch/.test(navigator.userAgent):case /Safari/.test(navigator.userAgent):return parseFloat(navigator.userAgent.split("Version/")[1].split("Safari")[0].replace(/[^0-9\.]/g,""));case /Firefox/.test(navigator.userAgent):return parseFloat(navigator.userAgent.split(/Firefox\//i)[1].replace(/[^0-9\.]/g,""));case /Android/.test(navigator.userAgent):return parseFloat(navigator.userAgent.split("Version/")[1].split("Safari")[0].replace(/[^0-9\.]/g, ""));case /Nokia/.test(navigator.userAgent):return parseFloat(navigator.userAgent.split("Browser")[1].replace(/[^0-9\.]/g,""))}}catch(a){console.debug("ERROR:setVersion\t",a)}}a:{try{if(navigator&&navigator.userAgent){navigator.browser=c();navigator.mobile=d();navigator.version=e();var b;b:{try{b=/WebKit/i.test(navigator.userAgent);break b}catch(a){console.debug("ERROR:setWebkit\t",a)}b=void 0}navigator.webkit=b;break a}}catch(a){}throw Error("Browser does not support `navigator` Object |OR| has undefined `userAgent` property."); }})(); /* simple c & p of above */ 

这就是我正在使用的:

 var ua = navigator.userAgent; var info = { browser: /Edge\/\d+/.test(ua) ? 'ed' : /MSIE 9/.test(ua) ? 'ie9' : /MSIE 10/.test(ua) ? 'ie10' : /MSIE 11/.test(ua) ? 'ie11' : /MSIE\s\d/.test(ua) ? 'ie?' : /rv\:11/.test(ua) ? 'ie11' : /Firefox\W\d/.test(ua) ? 'ff' : /Chrom(e|ium)\W\d|CriOS\W\d/.test(ua) ? 'gc' : /\bSafari\W\d/.test(ua) ? 'sa' : /\bOpera\W\d/.test(ua) ? 'op' : /\bOPR\W\d/i.test(ua) ? 'op' : typeof MSPointerEvent !== 'undefined' ? 'ie?' : '', os: /Windows NT 10/.test(ua) ? "win10" : /Windows NT 6\.0/.test(ua) ? "winvista" : /Windows NT 6\.1/.test(ua) ? "win7" : /Windows NT 6\.\d/.test(ua) ? "win8" : /Windows NT 5\.1/.test(ua) ? "winxp" : /Windows NT [1-5]\./.test(ua) ? "winnt" : /Mac/.test(ua) ? "mac" : /Linux/.test(ua) ? "linux" : /X11/.test(ua) ? "nix" : "", touch: 'ontouchstart' in document.documentElement, mobile: /IEMobile|Windows Phone|Lumia/i.test(ua) ? 'w' : /iPhone|iP[oa]d/.test(ua) ? 'i' : /Android/.test(ua) ? 'a' : /BlackBerry|PlayBook|BB10/.test(ua) ? 'b' : /Mobile Safari/.test(ua) ? 's' : /webOS|Mobile|Tablet|Opera Mini|\bCrMo\/|Opera Mobi/i.test(ua) ? 1 : 0, tablet: /Tablet|iPad/i.test(ua), }; 

info属性:

  • browser :Google Chrome的gc ; ie11ie11 ; ie? 对于旧的或未知的IE; 边缘ed ; ff for Firefox; Safari浏览器; op Opera。
  • osmac win7 win8 win10 winnt winxp winvista linux nix
  • mobilea Android的; i为iOS(iPhone iPad); w Windows Phone; b为黑莓; s为未被发现的手机运行Safari; 1为其他未被发现的手机; 0为非移动
  • touchtrue于支持触摸的设备,包括同时具有鼠标和触摸的触摸笔记本电脑/笔记本电脑; false没有触摸支持
  • tablettruefalse

https://jsfiddle.net/oriadam/ncb4n882/

 var isOpera = !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0; // Opera 8.0+ (UA detection to detect Blink/v8-powered Opera) var isFirefox = typeof InstallTrigger !== 'undefined'; // Firefox 1.0+ var isSafari = Object.prototype.toString.call(window.HTMLElement).indexOf('Constructor') > 0; // At least Safari 3+: "[object HTMLElementConstructor]" var isChrome = !!window.chrome && !isOpera; // Chrome 1+ var isIE = /*@cc_on!@*/false || !!document.documentMode; // Edge 20+ var isEdge = !isIE && !!window.StyleMedia; // Chrome 1+ var output = 'Detecting browsers by ducktyping:<hr>'; output += 'isFirefox: ' + isFirefox + '<br>'; output += 'isChrome: ' + isChrome + '<br>'; output += 'isSafari: ' + isSafari + '<br>'; output += 'isOpera: ' + isOpera + '<br>'; output += 'isIE: ' + isIE + '<br>'; output += 'isIE Edge: ' + isEdge + '<br>'; document.body.innerHTML = output; 

不完全是你想要的,但接近它:

 var jscriptVersion = /*@cc_on @if(@_jscript) @_jscript_version @else @*/ false /*@end @*/; var geckoVersion = navigator.product === 'Gecko' && navigator.productSub; var operaVersion = 'opera' in window && 'version' in opera && opera.version(); 

variables将包含适当的版本或者如果它不可用,则为false

我会很感激,如果有人使用Chrome可以找出是否可以使用window.chrome类似的方式window.opera

有时我们需要简单的方法来检查浏览器是否是IE浏览器。 这是如何可能的:

  var isMSIE = (/trident/i).test(navigator.userAgent); if(isMSIE) { /* do something for ie */ } else { /* do something else */ } 

或简化Siva的方法:

  if(!!navigator.systemLanguage) { /* do something for ie */ } else { /* do something else */ } 

MSIE v.11检查:

 if( (/trident/i).test(navigator.userAgent) && (/rv:/i).test(navigator.userAgent) ) { /* do something for ie 11 */ } 

其他IE浏览器在其userAgent属性中包含MSIEstring,并且可以被它捕获。

我发现了一些有趣而又快捷的方法。 IE支持navigator.systemLanguage ,在其他浏览器返回undefined返回“en-US”。

 <script> var lang = navigator.systemLanguage; if (lang!='en-US'){document.write("Well, this is not internet explorer");} else{document.write("This is internet explorer");} </script> 

我做这个小函数,希望它有帮助。 在这里你可以find最新版本的browserdetection

 function detectBrowser(userAgent){ var chrome = /.*(Chrome\/).*(Safari\/).*/g; var firefox = /.*(Firefox\/).*/g; var safari = /.*(Version\/).*(Safari\/).*/g; var opera = /.*(Chrome\/).*(Safari\/).*(OPR\/).*/g if(opera.exec(userAgent)) return "Opera" if(chrome.exec(userAgent)) return "Chrome" if(safari.exec(userAgent)) return "Safari" if(firefox.exec(userAgent)) return "Firefox" } 

使用jQuery:

 $.browser 

给你一些东西,如:

 Object {chrome: true, version: "26.0.1410.63", webkit: true}