P-0023 JavaScript の簡単ブラウザ判別
- 2000/9/27
- 2000/10/22
閲覧者のブラウザ判別に JavaScript を使うケースが多いですが、いちいち判定スクリプトを長々と書くのはめんどくさいものです。が、実はほんの少しの記述で IE と NN を判別することができます。
InternetExplorer 4.x 以上かどうかを調べる
「 document.all 」を使う
if ( document.all ) {
document.write(' このメッセージは IE 4 以上用です ');
}
オブジェクト「 document.all 」は IE 4 以上のみの独自拡張なので、 IE 4 以上であればこれで判別可能です。
「 type="text/JScript"」を使う
<script type="text/ JScript ">
document.write(' このメッセージは IE 4 以上用です ');
</script>
<script type="text/ JScript " src="scripts/ie.js"></script>
スクリプトタイプは普通「 JavaScript 」を使いますが、 IE のみ対応の独自拡張スクリプト「 JScript 」を指定すれば、そのスクリプトは IE でのみ実行されます。
JScript は JavaScript を拡張したものなので、 JavaScript に「 JScript 」のタイプ名を付けても何ら問題はありません。
ちなみに HTML 4 以降の文法では、スクリプト種別の指定は language="〜"
ではなく type="〜"
を使うことになっています。
NetscapeNavigator ( Communicator ) 4.x かどうかを調べる
if ( document.layers ){
document.write(' このメッセージは NN 4.x 用です ');
}
オブジェクト「 document.layer s 」は NN 4.x のみの独自拡張なので、 NN 4.x であればこれで判別可能です。
IE か NN かを調べる
if (navigator.appName.indexOf('Microsoft') > -1) {
document.write(' このメッセージは IE 用です ');
} else if (navigator.appCodeName = 'Mozilla') {
document.write(' このメッセージは NN 用です ');
} else {
document.write(' このメッセージは IE/NN 以外用です ');
}
応用
特別に判定の必要があるのは IE と NN, IE 3, NN 4 くらいなので、スタイルシートの切り替えなどの場合なら、以下のような感じで事足りるでしょう。
if (navigator.appName.indexOf('Microsoft') > -1) {
if (document.all) {
style = 'IE 4, 5';
} else {
style = 'IE 3';
}
} else if (navigator.appCodeName = 'Mozilla') {
if (document.layers) {
style = 'NN 4.x';
} else {
style = 'NN2, 3, 6';
}
}
ちなみに IE と NN の中では、 IE 4/IE 5/NN 4.x/N 6 だけがスタイルシートに対応しています。 Amaya や Opera なども判定する場合は、さらに分岐を加える必要があります。