IE 7 を判別する JavaScript コード2006年10月14日 07時57分

Abe Fettig’s Weblog » Detecting IE7+ in Javascript (日本語紹介記事) にて style.maxHeight プロパティを用いた IE 6 と 7 の判別方法が紹介されている。ただ、この方法だと IE とそれ以外を判別するためにもう一手間かけなくてはいけないので、IE 7 以上だけを判別できるようにしたのが以下。

if (typeof document.documentElement.style.msInterpolationMode != "undefined") {
  // IE 7 or newer
} else {
  // IE 6 or older, Gecko, Opera, etc.
}

IE 7 から実装された独自 CSS プロパティ、-ms-interpolation-mode を利用。画像を拡大するときの補完方法を指定するものらしい。それにしてもまさか IE が独自プロパティに接頭辞をつける日がこようとは! DOM オブジェクトのプロパティ名にしたときに "MsIntepolationMode" ではなく "msInterpolationMode" となるのは微妙なところだが。あと、document.body は body 要素の開始タグが現れるまで参照できないので document.documentElement を使用した。

なお、元記事中で条件付きコメントJScript の条件コンパイルについても話題に挙がっていたが、条件付きコメントは Multiple Explorers のような環境で期待通り動作しないし、スクリプトエンジンはレイアウトエンジンと関係なく更新可能なはずなので、確実性にやや劣ると思う。User-Agent 文字列はこの件に関しては役に立たない。Microsoft が直々に User-Agent 文字列を変更するツールを公開していたりするので (しかしこのツール、IE 7 用なのになぜか対応 OS に Windows XP SP1 が含まれている)。

それと、IE 7 のスクリプトエンジンのバージョンはどうなっているのだろうか? 元記事のコメントでは 5.7 という情報が出ているが、Browsershots で使われている IE 7 では 5.6.8833 となっている (IE 6 SP2 では 5.6.8831)。Beta 3 か RC1 かで更新されたのか? IE 7 RC1 で確認したところ 5.7.5700 だった。一応確認用に IE のレイアウトエンジン (が提供する DOM オブジェクト) とスクリプトエンジンのバージョンチェックページを置いておく。レイアウトエンジンは IE 5.01 相当なのにスクリプトエンジンは 5.5、条件付きコメントでは IE 6 として扱われるなんてことも起こりうるが。

コメント

コメントをどうぞ

※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

※投稿には管理者が設定した質問に答える必要があります。

名前:
メールアドレス:
URL:
次の質問に答えてください:
「ハイパーテキストマークアップ言語」をアルファベット4文字でいうと?

コメント:

トラックバック

このエントリのトラックバックURL: http://nanto.asablo.jp/blog/2006/10/14/560180/tb