| |
最終更新日: |
ブラウザ識別法
Cross Browser DHTML の基本はブラウザを認識することです。 これは以下の目的を持ちます。
DHTML に対応していないブラウザの認識
JavaScript1.2 の仕様の判別
上記項目の内、前者のブラウザのバージョンの識別に関しては、ここでは採り挙げません。 それは、 DHTML を作成する場合 JavaScript1.2 の仕様が必須といっても良いぐらい前提となりますから、 全てのブラウザから見られるようにするには、一つのスクリプトで切替えるよりも DHTML用のページと通常のページの2つを作成し、該当ページからのリンク時点で切替える方が楽であると判断するためです。 この判定方法に関しては、「色々なバージョン(スクリプトの記述)」の項を参照して下さい。
ここでは、後者の JavaScript1.2 を前提として2つのブラウザを識別する他の方法について記述します。
識別法1 使用できるオブジェクトで判断する
var brws='その他' if (document.layers) brws='Netscape4.0'; else if(document.all) brws='Explorer4.0'; alert('あなたのブラウザは'+brws+'以上ですね?');
識別法2 ブラウザに判断させる
Explorer | Navigator |
---|---|
省略 | 省略 |
JavaScript | JavaScript |
JavaScript+version | JavaScript+version |
JScript | なし |
<script language="JavaScript"><!-- function isBrowser(){ return 'Netscape4.0'; } // --></script> <script language="JScript"><!-- function isBrowser(){ return 'Explorer4.0'; } // --></script> <script language="JavaScript"><!-- function ex2(){ alert('あなたのブラウザは' +isBrowser() +'以上ですね?'); return false; } // --></script>
この手法のメリットは、同一のインターフェイスを提供すれば、 ブラウザの種類を自分で特定する必要がないため、 作成したコードが見づらくなりません。
これは、コーディングを各ブラウザ単位で独立して開発することの可能性を示唆しています。
但し、ポイントとなっている「JScript」の属性値ですが、 マイクロソフト社は正式に表明していますが、 Netscape社はこの値を認めないとは言っていないので、 将来共に使用できるか保証はありません。
また、 「JScript」は「JavaScript」のようにバージョン指定を認めていませんから、 バージョンの混在した環境では多少複雑になるかもしれません注。
注 バージョンが混在する場合には、 「JScript」内では関数や変数定義以外の実行は避けた方が良いでしょうし、 また、prototype などの新しい文法の記述も避けなければなりません。
識別法3 オブジェクトで判断し、対応する関数を登録する
<script language="JavaScript1.2"><!-- if(document.layers){ isBrowser2 = function(){ return 'Netscape4.0'; } } else if(document.all){ isBrowser2 = function(){ return 'Explorer4.0'; } } function ex3(){ alert('あなたのブラウザは'+ isBrowser2()+'以上ですね?'); return false; } // --></script>
注意事項
複数のバージョンでも見られるようにする場合には、 「識別法1」で行なうのが最も確実と思われます。