<meta http-equiv="X-UA-Compatible" content="IE=8">の罠

やっとIE8になった会社のブラウザ

やっと inline-block が使えるとよろこんだのもつかの間、「ツール」→「互換表示設定」の「互換表示でイントラネットサイトを表示する」にチェックが入ってて、外すことも許されないという状況

やむなく <meta http-equiv="X-UA-Compatible" content="IE=8"/>で対応してとりあえずめでたしのはずだったが、ある日、動作が微妙なjQueryプラグインを発見

調べてみると window.navigator.userAgent が、IE7になってるのが原因だった・・

結論

<meta http-equiv="X-UA-Compatible" content="IE=8"/>入れても「互換表示でイントラネットサイトを表示する」になってるとuserAgentはIE7になるので、userAgentをみて処理を振り分けてるプラグインを使用する際は注意が必要(userAgentがIE7でもIE8として正しくパースされるので、IE6/7非対応なプラグインは安心して使える)

IEのアホーッ

無理やり判定する方法

inline-block要素を生成しwidth指定し、指定した幅になればuserAgentがIE7でもIE8と判断する
inline-block要素を2つ生成&appendして、offset().topの位置が同じならIE8と判断する