IE8ブラウザ判別

IE8は標準モードと互換表示モードでユーザエージェントが変わってしまうようです。

つまり、

if (navigator.userAgent.indexOf("MSIE 8.") != -1)
    alert("is IE8");
else
    alert("isn't IE8");

これでは互換表示モードのときに判定を間違えます。


そこで、IE8から新しくユーザエージェントに含まれることになった"Trident"トークンを見て判定します。

if (navigator.userAgent.indexOf("Trident/4.0") != -1)
    alert("is IE8");
else
    alert("isn't IE8");


一応、

if (navigator.userAgent.indexOf("MSIE")!=-1 && navigator.userAgent.indexOf("Trident/4.0")!=-1)
    alert("is IE8");
else
    alert("isn't IE8");

IE判定も入れといた方がいいかもしれません


「Trident/4.0」がいいのか、「Trident」だけのがいいのか、「Trident/4.」としておくのがいいのか、
今現在はどれでも同じだろうけど、後々のことを考えるとどうしておくのがベターなんでしょうか・・


参考:
2009/01/09 - Internet Explorer 8 の User-Agent 文字列 (更新版)
第 13 回 Admintech.jp 勉強会: Days on the Moon