Javascriptを使ってInternet Explorerのバージョンを調べる方法を試してみた。
方法は次の2つで試した。
ケース1
// msieにバージョン番号を取り出す // var msie=navigator.appVersion.toLowerCase(); msie=(msie.indexOf('msie')>-1)?parseInt(msie.replace(/.*msie[ ]/,'').match(/^[0-9]+/)):0; document.write(msie);
ケース2
//最初にInternet Explorerか調べます START = UA.indexOf("MSIE"); //「MSIE」の文字列があれば、バージョンを取得する if ( START != -1 ) { //バージョン番号の後に「;」があるのでそれを検索 END = UA.indexOf(";",START); //「MSIE」+半角スペースの5文字を加えた位置から切り取る VERSION = UA.substring(START+5,END); //頭に「Internet Explorer」を付けてバージョンを書き出す document.write("Internet Explorer "+VERSION); }
ケース1およびケース2をIE9で実行すると、「標準表示」の場合はどちらもIE9と判定する。「互換表示」の場合はどちらもIE7と判定する。ブラウザはIE9であるにもかかわらずブラウザの表示モードが「互換表示」にしただけでIE7というバージョンを得るのか解せない。
IEでCanvasなどのJavascriptを使う場合、IE9とIE8では動作が異なるので旧バージョンでも扱えるようにバージョンを判定して、Javascriptの中で差異を吸収したいと考えたが、表示モードによって判定結果が異なってくるのでこの方法は使えない。
IE8以下でキチンと動作するものは、IE9へ対応はJavascriptの中で差異を吸収するのでなく、表示モードを変えて対応すべきものであろう。