11

私はある種のJavaScriptライブラリを開発しています。そして、私はいくつかの特定の問題を抱えているという問題を引き起こします:ブラウザ:IE8 / IE9およびドキュメントモード:IE7私は解決策を見つけましたが、すべての状況でそれを使用したくはありません、そして私が持っているときにそれを使用したい上記の状況。以下を使用してブラウザを認識できることを知っています。

return navigator.userAgent.toLowerCase().indexOf('MSIE 8') > -1;

しかし、私はそのような方法でブラウザのバージョンだけを認識しますが、ドキュメントモードは認識しません。たとえば、ブラウザモードIE8とドキュメントモードIE 8がある場合、ソリューションを使用したくありません。ページドキュメントモードを取得する方法はありますか? IEで?前もって感謝します。

4

2 に答える 2

30

document.documentModeIEが使用しているドキュメントモードを正確に返すために使用できます。

つまり、ブラウザモードをIE9に設定しているが、ドキュメントモードをIE8に設定している場合、document.documentMode == 8が返されます(userAgent文字列は引き続きIE9として表示されます)。これは、ブラウザモードではなく、IEがページをレンダリングする方法を決定するのはドキュメントモードであるため、JSにスタイルの変更が含まれている場合に特に便利です。互換モードは、実際にはドキュメントモードを変更するだけです(通常はIE7に)。

いくつかのケースでは、IEを区別するために次のようなものを使用する必要がありました。

if (document.documentMode == 7) {
    doSomethingIn.IE7_only;
} else {
    doSomething.everwhereElse;
}

それがいくつかの助けになることを願っています。

于 2012-12-05T21:15:40.413 に答える
1

ドキュメントモード1を取得する方法はわかりませんが、より基本的な方法で問題に対処するのが賢明かもしれません。document.querySelectorスクリプトで使用したいとします。IE8/ドキュメントモードのIE7標準では失敗します。したがって、document.querySelectorそれ自体の存在をさらにチェックすることが解決策になります。

return ~navigator.userAgent.toLowerCase().indexOf('MSIE 8') 
       && document.querySelector; //=> IE8 and Docmode IE7 => false

1ドキュメントモードを確認する方法を見つけました:を使用しますdocument.documentMode。整数(ドキュメントモードIE7標準の場合は7)、。の場合は5を返しますQuirks modeundefinedIE以外のブラウザ用になり

于 2012-10-29T12:22:07.633 に答える