web-dev-qa-db-ja.com

IE8が互換モードをトリガーする原因となる具体的なものは何ですか?

状況によってはIE8が互換性メッセージをポップアップし、互換モードでリロードするアプリがあります。

表示の問題により、InternetExplorerは互換表示を使用してWebページを更新しました

これはまれであり、私が知る限り、メタタグが原因で発生することはありません。これは、DOMを変更するユーザーアクションへの応答として発生します。これは次と同じ問題です: https://superuser.com/questions/215281/how-do-i-stop-ie-jumping-into-compatability-view 、しかし私の質問は:何ですかそれを修正する助けとして、物事の種類がこれを引き起こします。

別の言い方をすれば、このサイトを参照してください thesitewizard.com 、IE8の互換モードの3番目の原因は次のように説明されています。

また、場合によっては、他の計り知れない、文書化されていない理由で、標準に準拠していると検証されたページで(または、少なくともリリース候補1でこれを行います)。

そして問題は、どのような計り知れない、文書化されていない理由ですか?

32
mtyson

長いデバッグセッション(古い学校のアラートを使用して、どこで何が失敗していたかを特定する)の後、この一見無害なdom操作の行が原因でした:

document.getElementById("literal"+varValue).style.display = "none";

ここではエラーはなく、要素が見つかったようです(つまり、これは園芸品種のnullポインターではありません)。

これは大規模なアプリであり、このコードの周りで多くのことが起こっています。私はそれを以下に切り替えました、そしてこれは明らかに問題を防ぎました:

setTimeout(function(){
           var layoutEl = document.getElementById("literal"+varValue);
           if (layoutEl)
               layoutEl.style.display = "none";
       },10)
7
mtyson

あなたはすでにあなたの答えを持っていることを私は知っていますが、今日私はIE8が互換モードをトリガーする原因を探していました。 JavaScriptコードcss(:first、:lastなど)を検索しましたが、インラインスタイルのようでした:

オーバーフローと組み合わせた最大高さ。

したがって、これは(また)IE8の互換モードをトリガーします:

style="overflow:scroll;max-height:200px;"

そして、これはそうではないので、それは私の問題を解決しました:

style="overflow:scroll;height:200px;"

編集:これは関連していると思います: IE8オーバーフロー:最大高さの自動

5
Piemol

次のコンテンツは、MSDNの記事 " デフォルトのレンダリングの制御 "からのものです。


  • ページの互換表示が有効になっています。
  • ページはイントラネットゾーンに読み込まれ、Internet Explorerは、インターネットゾーンから読み込まれたページに互換表示を使用するように構成されています。
  • ページはユーザーのローカルファイルシステムから読み込まれ(つまり、ページはイントラネットゾーンに読み込まれます)、Internet Explorerは、インターネットゾーンから読み込まれたページに互換表示を使用するように構成されています。
  • Internet Explorerは、互換表示ですべてのWebサイトを表示するように構成されています。
  • Internet Explorerは、互換表示リストを使用するように構成されています。互換表示リストは、互換表示に常に表示される一連のWebサイトを指定します。
  • 開発ツールは、Webページで指定された設定を上書きするために使用されます。
  • Webページでページレイアウトエラーが発生しました。InternetExplorerは、互換表示でページを再度開くことにより、このようなエラーから自動的に回復するように構成されています。
  • このページには、特定のゾーンにロードするように指示するWebのマークが含まれています。

これらのリンクは、InternetExplorerがWebページの適切なドキュメントモードを決定する方法を説明する追加情報を提供します。

5
jessegavin

これは古い質問だと思いますが、出会ったばかりの何かを追加すると思いました。互換モードが強制されていて、ソースを追跡できないという問題がありました。手動でページを互換モードから外しましたが、一部の文字が表示されていないことに気付きました。最終的には、疑似要素でカスタム文字を使用していた箇条書きになりました。

li:before {
  content: '\25B6';
}

簡単な修正として、これをIE 9未満:

.lt-ie9 li:before {
  content: '';
}

この記事 誤って処理された文字を探すというアイデアを私に与えました。彼らが同様の問題に遭遇した場合、これが誰かに役立つことを願っています!

2
doubleswirve