JavascriptがIE 8に互換表示でページをリロードさせるにはどうすればよいですか?
-
22-07-2019 - |
質問
Windows Vista上のInternet Explorer 8で、かなり複雑なJavascriptベースのWebアプリケーションをテストしています。アプリケーションをロードすると、IEは「標準」になります。ブラウザモードと「IE 8標準」ドキュメントモード。アプリケーションの実行中、IEはページをリロードし、「(URL)の表示の問題によりInternet Explorerが互換表示でページをリロードした」などのメッセージを表示することがあります。 (正確なメッセージではなく、私は英語版以外のVistaを使用しています)。リロード後、ブラウザはQuirksモードになります。
問題を確実に再現または絞り込むことができないため、Javascriptコードのデバッグは無駄になりました。そのため、この動作の原因についての洞察に感謝します。
解決
innerHTML
で提供/作成しているマークアップに問題があるはずです。これは、 IE8標準モードで正しく解析できないマークアップからのIEの自動回復の詳細:
...新しいレイアウトエンジン内に特定のコードパスがあります。エラーが発生した場合、レイアウトプロセスは正常に回復できず、これらのパスに関するアサーションを保持しています...互換表示を使用してレイアウトの「ハードアサーション」を回復することにより、IE8のリリースバージョン。つまり、IE7のようにページを表示すると、コンテンツをまったく表示しないよりもユーザーエクスペリエンスが向上すると考えています。
innerHTML
を使用すると、HTMLパーサーが呼び出されるため、ページを読み込んだ後でも、先頭も末尾もできないHTML文字列を入力すると、この問題が発生する可能性があります。
他のヒント
基本的に。ページごとに、メタタグを追加できます
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
または、サイト全体でこれをヘッダーに追加します:
X-UA-Compatible: IE=EmulateIE7
自動クラッシュ回復のような音レンダラー自体で発生します。これはスクリプトではなくIE自体のバグであるため、デバッグは実際に困難になります。
これはすべてのIE8インストールで発生しますか? IE8は最新のパッチで更新されていますか? (信頼性の低いサードパーティの拡張機能でしょうか?)