7

含まれているページが IE8 の互換モードでレンダリングされているため、レイアウトの問題があります。特定のページで IE8 が互換モードに入る原因を検出する方法はありますか?

Microsoft のドキュメントによると、次の条件により、ページが互換モードでレンダリングされる可能性があります ( http://msdn.microsoft.com/en-us/library/cc288325%28VS.85%29.aspx )。

  • ページで互換表示が有効になっています。
  • ページはイントラネット ゾーンに読み込まれ、Internet Explorer 8 は互換表示でイントラネット ゾーンのページに構成されます。
  • Internet Explorer 8 は、すべての Web サイトを互換表示で表示するように構成されています。
  • Internet Explorer 8 は、常に互換表示で表示される一連の Web サイトを指定する互換表示リストを使用するように構成されています。
  • 開発者ツールは、Web ページで指定された設定をオーバーライドするために使用されます。
  • Web ページでページ レイアウト エラーが発生しました。Internet Explorer 8 は、互換表示でページを再度開くことによって、このようなエラーから自動的に回復するように構成されています。

ページを確認した後、ページのページ レイアウト エラーに違いない最初の可能性を除外しました。このエラーを見つけたいです。

4

2 に答える 2

4

IE を強制的に互換モードにする <meta> タグがあるかどうかを確認します。

必要に応じて、強制的に IE8 (完全に CSS 2.1 に準拠) としてレンダリングすることができます。

<meta http-equiv="X-UA-Compatible" content="IE=8"/>
于 2010-06-23T17:18:32.060 に答える
0

ID が compat-warning の隠し要素があるとします。

Javascript と jQuery:

$(function(){
    function showCompatWarning() {
        $('#compat-warning')
            .css('display','block')
            .css('height','auto')
            .show();
    }
    var tridentOffset = navigator.appVersion.indexOf('Trident/');
    if ( tridentOffset === -1 ) return;
    var jscriptVersion = 0;
    /*@cc_on @*/
    /*@if (@_jscript) jscriptVersion = @_jscript_version ; @*/;
    /*@end @*/
    var tridentVersion = parseInt(navigator.appVersion.substr(tridentOffset+8),10);
    var guessIEVersion = tridentVersion + 4;
    if (( document.documentMode && jscriptVersion && jscriptVersion < 10 && jscriptVersion !== document.documentMode ) ||
        ( document.compatMode && document.compatMode === 'BackCompat') ||
        ( document.documentMode && document.documentMode < 10 && document.documentMode != guessIEVersion ))
        showCompatWarning();
});

検出と警告、互換性地獄に対する最初と最後の防衛線。

于 2015-03-26T20:25:30.850 に答える