3

私は一日中 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 つにすぎませんか? これについて何か助けていただければ幸いです。

4

3 に答える 3

4

強制的に互換モードでリロードするということは、次のようなフライアウト バルーン通知を受け取ることを意味しますか?

もしそうなら、それは IE のバグに遭遇したことを意味します。「ハード アサート」と呼ばれるこれは、レイアウト エンジンがクラッシュしたことを意味し (AV やエキサイティングなものではなく、回復不能な状態になっただけです)、IEは古いレイアウト エンジンを使用してユーザーにコンテンツを提供しようとします。

問題が IE9 でも発生する場合は、http: //connect.microsoft.com/ie でバグを報告してください。

ありがとう!

于 2010-10-14T23:44:46.350 に答える
3

DOCTYPE と X-UA-Compatible が正しいことを確認しましたか?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

そして、これを直後に追加します<head>

<meta http-equiv="X-UA-Compatible" content="IE=8">
于 2010-09-01T01:01:55.283 に答える
2

同僚も検索を行った後、これをSOで見つけました。ここで、max-heightがIE8でハードアサーションを引き起こしていることが確認され、EricLawが投稿したIE8のバグであることが確認されました。

コンテンツを挿入するdivのスタイルにmax-heightを使用していたため、ハードアサーションが発生しました。上記のリンクされた質問には、この問題に遭遇した他の人のための回避策があります。

于 2010-11-09T06:04:29.303 に答える