我一直在寻找可以检测访问网站的用户使用的是火狐3还是火狐4的代码。我所找到的只是检测浏览器类型而不是版本的代码。

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


当前回答

更新的代码,以检测浏览器从iOS。

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)\/(\d+)/);
    if(tem!= null) return 'Opera '+ tem.slice(1)[1];
    tem= ua.match(/\b(Edg[a-zA-Z]{0,3})\/(\d+)/);
    if(tem!= null) return 'Edge '+ tem.slice(1)[1];
} else if(M[1]=== 'Safari') {
    tem= ua.match(/\b(EdgiOS)\/(\d+)/);
    if(tem!= null) return 'Edge '+ tem.slice(1)[1];
    tem= ua.match(/\b(FxiOS)\/(\d+)/);
    if(tem!= null) return 'Firefox '+ tem.slice(1)[1];
    tem= ua.match(/\b(CriOS)\/(\d+)/);
    if(tem!= null) return 'Chrome '+ tem.slice(1)[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 M.join(' ');

}) ();

其他回答

为什么不另一个解决方案:

navigator.userAgent.includes("Firefox")? log("Mozilla") :log("Chrome")

看看navigator。userAgent - Firefox/xxx.xxx. xxx。XXX是在结尾指定的。

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

console.log(navigator.appVersion)

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

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

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

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

编辑:正如Joshua在他的评论下面所写的,jQuery。jQuery自1.9版起不再支持browser属性(详情请参阅jQuery 1.9发布说明)。 jQuery开发团队建议使用更完整的方法,例如使用Modernizr库调整UI。