IEのバージョン判定

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の中で差異を吸収するのでなく、表示モードを変えて対応すべきものであろう。