使用 jQuery 检测特定的浏览器版本

Detecting specific browser versions using jQuery

本文关键字:浏览器 版本 jQuery 检测 使用      更新时间:2023-09-26

我有这段代码可以成功检测Mozilla Firefox:

function isFFold() {
  return (
    (navigator.userAgent.toLowerCase().indexOf("firefox") >= 0)
  );
}

如何更改代码以获得特定版本?我已经到处找过,但我找到的唯一方法是使用已弃用的浏览器功能。

我总是使用此代码来检查用户代理及其版本:

navigator.sayWho= (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) || [];
        navigator.isIE = true;
        return 'IE '+(tem[1] || '');
    }
    navigator.isIE = false;
    if(M[1]=== 'Chrome'){
        tem= ua.match(/'bOPR'/('d+)/)
        if(tem!= null) return 'Opera '+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 M.join(' ');
})();

它会告诉您任何用户代理的名称和版本。不幸的是,我不再知道这段代码的原始来源了。

请注意,此代码也可以在没有 jQuery 的情况下工作。

但是,应尽量避免此类代码,并改用功能检测

由于您只想知道 Mozilla Firefox 的版本,因此您也可以使用此函数:

function getFFversion(){
  var ua= navigator.userAgent, tem;
  var match = ua.match(/firefox'/?'s*('d+)/i);    
  if(!match){     //not firefox
    return null;
  }
  if((tem= ua.match(/version'/('d+)/i)) != null) {
    return parseInt(tem[1]);
  }
  return parseInt(match[1]);
}

它将以整数形式返回版本。如果浏览器不是 Mozilla Firefox,它将返回null

您的测试函数可以如下所示:

void isFFold(minVer){
  var version = getFFversion();
  return ( version!==null && version < minVer );
}

(对于非火狐浏览器,它将返回 false(