javascript判定chromeブラウザの方法


userAgentによって、userAgentが返した文字列に「Chrome」が含まれているかどうかを確認します。具体的にはindexOf方法によって行われます。

<script type="text/javascript">
  var isChrome = window.navigator.userAgent.indexOf("Chrome") !== -1;
  alert(isChrome);
  if (isChrome) {
    alert(" Chrome   ");
  } else {
    alert("  Chrome   ");
  }
</script>
indexOf方法について:
indexOf法は、Stringオブジェクト内のサブ文字列の開始位置を示す整数値を返します。すなわち、indexOf()括弧内に含まれる文字は、その文字列内の位置にあり、何番目かで戻り、0から数え始めます。重複した文字がある場合は、最初の文字に準じる。サブ文字列が見つからない場合は-1を返します。
 JSはカーネルで各種ブラウザを判断し、360とGoogleを区別する(親測定が可能)。

function getBrowserInfo(){
    var ua = navigator.userAgent.toLocaleLowerCase();
    var browserType=null;
    if (ua.match(/msie/) != null || ua.match(/trident/) != null) {
      browserType = "IE";
      browserVersion = ua.match(/msie ([\d.]+)/) != null ? ua.match(/msie ([\d.]+)/)[1] : ua.match(/rv:([\d.]+)/)[1];
    } else if (ua.match(/firefox/) != null) {
      browserType = "  ";
    }else if (ua.match(/ubrowser/) != null) {
      browserType = "UC";
    }else if (ua.match(/opera/) != null) {
      browserType = "  ";
    } else if (ua.match(/bidubrowser/) != null) {
      browserType = "  ";
    }else if (ua.match(/metasr/) != null) {
      browserType = "  ";
    }else if (ua.match(/tencenttraveler/) != null || ua.match(/qqbrowse/) != null) {
      browserType = "QQ";
    }else if (ua.match(/maxthon/) != null) {
      browserType = "  ";
    }else if (ua.match(/chrome/) != null) {
      var is360 = _mime("type", "application/vnd.chromium.remoting-viewer");
      function _mime(option, value) {
        var mimeTypes = navigator.mimeTypes;
        for (var mt in mimeTypes) {
          if (mimeTypes[mt][option] == value) {
            return true;
          }
        }
        return false;
      }
      if(is360){
        browserType = '360';
      }else{
        $('html').css("zoom",".80");
      }
    }else if (ua.match(/safari/) != null) {
      browserType = "Safari";
    }
}
原生Chromeの中には「appication/vd.cromium.remoting-viewer」が存在するだけで、ブラウザは殻付きChromeまたは元のChromeであると判断できる。
また、IEカーネルのブラウザのみActiveXObjectオブジェクトが存在する。これにより、IEブラウザかどうかを判断することができる。
ブラウザのタイプを判断するには、以下の原則を遵守する必要があります。
1、命中特徴原則を採用し、またブラウザの特徴を完全に一致させる場合にのみこの特徴を採用する。例えば、単にUAにおけるMSIEにより、IEブラウザであるか否かを検出することは信頼できない。MimeTypeが存在するかどうかを判断することによって、元のChromeは現段階では実現可能性であるが、永久的な有効性は保証されない。
2、主流のブラウザにとってUserAgentのキーワード衝突は一般的に存在しないが、多くの外部ブラウザに対しては必ずしもそうではない。再度あるデジタルブラウザを提出して、userAgentは思い切ってIEと同じですが、レンダリングモードなどは何をしたか分かりません。ブラウザをuserAgentで判断する場合は、ブラウザの特徴語に優先的に命中します。マッチングは基本的にブラウザとして決定されますが、マッチしていなくてもこのブラウザではありません。ご了承ください
3、ブラウザの特性を優先的に使用してブラウザを区別します。この精度が高いからです。次にuserAgent補助判断を採用し、最高の整合度を達成します。
4、優先的に第三者の殻付きブラウザを検出して、現在は十分な方案がなく、大部分の世界に存在して判断できるブラウザのみを列挙し、他のいかなるルールにも合致していないブラウザは、互換性のために、ルールを四つのブラウザの一つに落としてください。
5、ブラウザバージョンを判断して、特定のブラウザに対して最適化するためだけに、特定のビジネスシーンが必要です。あるいは、あるブラウザに対応問題が発生した場合、ブラウザに対するパッチコードを緊急に追加した場合に判断します。より科学的で妥当な方法は標準的なJS関数とAPIを使用して、ページ要素とデザインはW 3 C標準に準拠しています。論争の可能性がある互換性の問題は、できるだけ第三者の枠組みを採用してjQueryのようです。これこそ互換性の問題を解決する根本です。
最近のルールを整理してブラウザのタイプを判断するコードを添付します。