navigatorを使ってブラウザを判別する方法について解説-その2

HOME
更新日:2013.10.04
HOMEJavaScript入門 > navigatorでブラウザを調べる2

navigatorでブラウザを調べる2

それを使って、実際にブラウザを判別するためのスクリプトを組んでみることにしましょう。 今のページではInternet Explorer,FireFox,Opera,Google Chrome,Safari, その他のブラウザ、と分けてみたいと思います。

<サンプル>
現在使用中のブラウザ:

上記サンプルでは、ブラウザが正しく判別されているでしょうか? もし間違っているなら、ぜひ連絡フォーム等で知らせて下さい。

ブラウザ判別の流れ

前のページでは、appNameでIEとOpera,appVersionでSafariとChromeが識別できることを見ました。 ではその方法に則ったブラウザ判別プログラムを作ってみることにしましょう。 もちろんuserAgentを使えば一発で判別できますが、それはまた別所で紹介できたらと思います。

ブラウザ判別の概要をフローチャートで示すと以下のようになります。 この流れでスクリプトを組んでみたいと思います。

ブラウザ判別の流れ

ブラウザ判別スクリプト

HTMLのBODY内に以下のスクリプトを記入してみましょう (上記のサンプルもこのスクリプトで判別しています)。

<script>

var nvName = navigator.appName;
var nvVersion = navigator.appVersion;
var nvUsAgent = navigator.userAgent;

//1.Internet Explorerか調べる
if ( nvName.indexOf("Internet Explorer") > -1 )
{
  document.write("Internet Explorer");
}
else
{
  //2.Operaか調べる
  if ( nvName.indexOf("Opera") > -1 )
  {
    document.write("Opera");
  }
  else
  {
    //3.「Safari」が含まれるか調べる
    if ( nvVersion.indexOf("Safari") > -1)
    {
     //4.SafariかChromeを見分ける
     if( nvVersion.indexOf("Chrome") > -1)
      {
        document.write("Google Chrome");
      }
      else
      {
        document.write("Safari");
      }
    }
    else
    {
      //5.FireFoxかその他のブラウザかを見分ける
      if( nvUsAgent.indexOf("Firefox") > -1 )
      {
        document.write("FireFox");
      }
      else
      {
        document.write("その他のブラウザ");
      }
    }
  }
}

</script>

文字列.indexOf("検索文字列")が大活躍しています。 indexOf()は検索文字列があれば先頭から何文字目かを取得し、 文字列が無ければ-1を返します。 ですからif文を使って-1より大きいか否かを調べることで文字が含まれているか判別し、 処理を分岐できます。


次のページでは、ブラウザのバージョンを調べてみたいと思います。 こちらはuserAgentに頼ることになります。