JavaScriptはブラウザやバージョンによって動かないということが非常に多く、きちんとバージョンチェックをしておかないと、エラーの嵐が襲ってきたりします。
そこで今回はバージョンチェックをしっかり学習してみることにします。
普通、最初のうちにやることじゃ無いのか?という意見もあるような、無いような(あるんだってば)
先ず、バージョン分岐の手としては、SCRIPTタグのLANGUAGEオプションにバージョンを記述するという手がある。NOSCRIPTタグも併用すれば、JavaScriptを使えないブラウザにもちゃんと反応することができる。
あなたの現在使用中のブラウザは「JavaScriptポケットリファレンス」によると、バージョンナンバーとブラウザの対応は以下の通り。
N2 | N3 | N4 | IE3 | |
---|---|---|---|---|
JavaScript1.2 | × | × | ○ | × |
JavaScript1.1 | × | ○ | ○ | ○ |
JavaScript | ○ | ○ | ○ | ○ |
JScript | × | × | × | ○ |
LiveScript | ○ | ○ | ○ | ○ |
しかし、これでは、それ以上のバージョンでは動くというものは作れても、それ以下でのみ動くというものは作れないな。
丁寧にチェックをするならば、プログラム内部で細かく分岐する必要も出てくるので、ナビゲータープロパティ(属性)のappVersionを見てみるといい筈。
appVersionの価を見てみると、
、となっている。
数字以外にも色々とくっ付いてくるので、このままでは、分岐処理しにくい。
幾つかのブラウザで確認した所、頭の3文字までは必ず数字のバージョンが返ってくるようだ、4文字めからは細かいバージョンでb(ベータ)とか入ってくるので、必ず数字が返ってくるとは限らない、普通はそんなに細かいバージョンチェックの必要性は無いので、これだけ取れればいいだろう。
substringメソッドを使って (navigator.appVersion).substring(0,3)と書けば、ブラウザのバージョンの数字だけが得られるという訳。
上のスクリプトを最初に(HEAD内に)仕掛けて、グローバル変数に記録しておいたりすると便利だろう。
ついでに、
ってな感じに記述すれば、3.0以上ならばtrue、それ未満ならばfalseが得られるので、その後の処理で、
if(B_VER){...}と言う感じに書けて、とっても便利ですね。
今日はここまで。