ブラウザに応じて処理を振り分ける

とほほのWWW入門 > とほほのJavaScript入門 > ブラウザに応じて処理を振り分ける
1999年6月20日

■ 説明

JavaScriptは、バージョンによって動作がいろいろ異なるため、バージョンに応じた記述を行う必要があります。ここでは、その振り分けテクニックをいくつか紹介します。

■ テクニック(1)

<SCRIPT>タグのLANGUAGE属性によって処理を振り分けます。例えば、
    <SCRIPT LANGUAGE="JavaScript1.1">
    <!--
    document.write("IE4.0〜、NN3.0〜");
    // -->
    </SCRIPT>
とした場合、IE4.0以降、NN3.0以降でのみ、JavaScriptが実行されます。どのブラウザでどのLANGUAGEがサポートされているかは、LANGUAGE属性を参照してください。

■ テクニック(2)

navigator オブジェクトの appName と appVersion を調べて処理を振り分けます。app=="M" で ver==2 の時は、NN2.0を模倣したIE3.0だったりするので注意が必要です。
    <SCRIPT LANGUAGE="JavaScript">
    <!--
    app = navigator.appName.charAt(0);
    ver = navigator.appVersion.charAt(0);
    if (app == "N") {
       if (ver == 2) {
          document.write("Netscape Navigator 2.0X<BR>");
       } else if (ver == 3) {
          document.write("Netscape Navigator 3.0X<BR>");
       } else if (ver == 4) {
          document.write("Netscape Navigator 4.X<BR>");
       }
    } else if (app == "M") {
       if (ver == 2) {
          document.write("Internet Explorer 3.0<BR>");
       } else if (ver == 3) {
          document.write("Internet Explorer 3.0 or 4.0<BR>");
       } else if (ver == 4) {
          document.write("Internet Explorer 4.X or 5.X0<BR>");
       }
    }
    // -->
    </SCRIPT>
以下に、それぞれのブラウザにおいてどういう値が返されるかの一覧を示します。Win95などの値はOSなどプラットフォームによって異なります。ここに載っていないブラウザの値をご存知の方はご連絡ください。

【navigator.appNameの例】
ブラウザ値の例
IE3.0/4.0/5.0(Win/Mac)Microsoft Internet Explorer
NN2.0/3.0/4.0/4.6/(Win/Mac)Netscape

【navigator.appVersionの例】
ブラウザ個数値の例
IE3.0X(Win)39582.0 (compatible; MSIE 3.0; Windows 95)
IE3.0X(Mac)823.0 (compatible; MSIE 3.0; Mac_PowerPC)
IE4.0X(Mac)73.0 (compatible; MSIE 4.0p1; Mac_68000)
IE4.0X(Win)509304.0 (compatible; MSIE 4.0; Windows 95)
IE4.0X(Mac)16484.0 (compatible; MSIE 4.0; Mac_PowerPC)
IE4.5X(Mac)32624.0 (compatible; MSIE 4.5; Mac_PowerPC)
IE4.5X(Mac)14.5 (compatible; MSIE 4.5; Mac_PowerPC)
IE5.0X(Win)435184.0 (compatible; MSIE 5.0; Windows 98)
NN2.X(Win)662.01I [ja] (Win95; I)
NN2.X(Mac)362.02 [ja] (Macintosh; I; PPC)
NN2.X(X11)232.02 [ja] (X11; I; SunOS 5.3 sun4m)
NN3.X(Win)24353.03 [ja] (Win95; I)
NN3.X(Mac)11623.01 [ja] (Macintosh; I; PPC)
NN3.X(X11)10993.01 [ja] (X11; I; SunOS 5.5.1 sun4u)
NN4.X(Win)356274.5 [ja] (Win95; I)
NN4.X(Mac)92624.5 [ja] (Macintosh; I; PPC)
NN4.X(X11)39014.5 [ja] (X11; I; SunOS 5.6 sun4u)
※ それぞれのブラウザのappVersionの値と、その頻度(1999年6月時点)を、「とほほのWWW入門」へのアクセス数から調べてみました。

■ テクニック(3)

上記のように、appVersionから、そのブラウザのバージョンを調べるのはなかなか厄介です。そこで、ブラウザやJavaScriptのバージョンではなく、今から使おうとしているオブジェクトがサポートされているかどうかを調べる方法があります。これだと、JavaScriptをサポートするIEやNN以外のブラウザが出現した時でも対応できるので、オススメです。
    <SCRIPT LANGUAGE="JavaScript">
    <!--
    if (document.images) {
       document.write(document.images[0].src);
    }
    if (document.layers) {
       document.write(document.layers[0].src);
    }
    // -->
    </SCRIPT>

Copyright (C) 1999 とほほ
http://wakusei.cplaza.ne.jp/twn/wwwjsx30.htm