私は一日中 IE8 の互換モードと格闘してきました。
jquery 1.2 を使用するコードがいくつかあります (古いので変更できません)。Web アプリでいくつかのレコードを検索します。検索結果をクリックすると、レコードの内容を表示できます (.animate() を使用すると、行の下にスペースが開き、その下に別の TR が作成され、json フィードから HTML データが挿入されます)。
IE8 では、結果をクリックしてコンテンツを表示すると、強制的に互換モードでリロードされ、他のすべてのブラウザー (IE7、FF3.0+、Chrome、Safari) で問題なく動作します。IE8 の開発者ツールバーを使用して、これが発生している理由をデバッグして追跡しようとしましたが、エラーや原因の証拠を見つけることができませんでした。
プレビューを表示するコード:
// Code that binds a click to open the result preview:
var _tr = $('<tr class="outline" id=' + val.assessment.assessmentId + '></tr>').bind("click", msi.reuseAssessment.preview);
...
// in msi.reuseAssessment.preview()
var url = "/direct/msi-assessment/" + assessmentId + "/assessmentHtml.json?no-cache=true";
jQuery.ajax({
type: "GET",
url: url,
dataType: "json",
success: function(d, textStatus){
var _content = d.assessmentHtml;
var _preview = $("<tr id=" + assessmentId + "></tr>");
// loadContent
_tr.after(_preview.animate({
height: 50
}, 500, 0, function() {
msi.reuseAssessment.drawPreview(this, _content); // Puts the content from the json into a td
}));
},
error: function(xmlHttpReq, status, errorThrown) {
// display error msg
}
});
IE8 の開発者ツールを使用してコードをステップ実行すると、コードはここに渡され、jQuery のコードのどこかに渡され、互換モードで更新されます。w3c で出力される HTML コードである JSON を検証しましたが、問題はありません。何が起こっているのか本当にわかりません。
原因を突き止める方法を知っている人はいますか、またはこれらのページで IE7 モードを強制する必要がありますか?
編集: 検索は、画面の上部に表示される ajax 'ポップアップ' で実行されます。テンプレート (ベース HTML) は別の HTML ファイルから読み込まれ、元のページの下部にある div に挿入されます。これは、ネストされた HTML ファイル (<html></html>
タグなどを含む) が存在することを意味します。これも影響しますか?
編集 3: これらの重複タグを削除しても問題は解決しませんでした。
編集 2: まだ解決していません。IE8 が適切に表示されず、ブラウザの癖に起因するのは、これらのことの 1 つにすぎませんか? これについて何か助けていただければ幸いです。