3

我整天都在對抗IE8的兼容模式,我約在它扔磚。IE8勢力兼容模式將在數據進入一個div

我有一些代碼,使用jQuery的1.2(是的,它是舊的 - 不能改變),來搜索我們的web應用程序的一些記錄。可以點擊搜索結果來查看記錄的內容(通過使用.animate()它會在該行下打開一個空格,並在下面創建另一個TR並從json feed中插入HTML數據)。

在IE8,點擊的結果,以查看該內容強制它在兼容模式,在那裏它工作正常在所有其他的瀏覽器(IE7,FF3.0 +,鉻,Safari瀏覽器)重新加載。我一直在嘗試使用IE8的開發工具欄來調試和追蹤爲什麼發生這種情況,但是我一直無法找到任何錯誤或任何可能導致它的證據。顯示預覽

代碼:使用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 
    } 
}); 

,它就會在這裏和到地方傳遞到jQuery的代碼,當它在兼容模式下刷新之時。我已經驗證了JSON,這是W3C推出的HTML代碼,這一切都很好,我真的很擔心發生了什麼。

有誰知道我怎麼可能會更好地追查什麼原因引起的,或者我應該只是強制IE7模式在這些網頁上?

編輯:搜索是在出現在屏幕頂部的AJAX「彈出」執行。它的模板(基本HTML)從單獨的HTML文件加載,並注入到原始頁面底部的div中。這意味着將有嵌套的HTML文件(與<html></html>標籤等)。這也會影響它嗎?
編輯3:刪除這些重複的標記沒有解決問題。

編輯2:還沒有解決這個問題。它只是IE8不能正確顯示並且把它放在瀏覽器的怪癖中的那些東西之一?我非常感謝這方面的幫助。

+0

你確定你設置了正確的文檔類型嗎?也許有些東西與它混淆。 – Iznogood 2010-09-01 00:58:10

+0

通過嵌套的html文件,你是否意味着完整的標籤?如果是這樣,我會刪除這些,所以你只加載頁面片段。對於許多事情,IE比FF/Chrome有更嚴格的解析器。這可能就是這種情況。 – Damo 2010-10-14 00:57:31

+0

@Damo,是的,因爲內部HTML文件是一個單獨的模板文件(例如,主要模板爲assessment.html的searchcontent.html)。我曾想過這件事,我會試試看。 – Cyntech 2010-10-14 00:59:01

回答

2

在一位同事做了一些搜索之後,我們發現這個here on SO,其中已經確認max-height在IE8中導致了一個硬斷言,確認它確實是IE8中的一個bug,正如EricLaw所發佈的。

我們使用max-height作爲插入內容的div的樣式,並導致硬斷言。上述鏈接問題解決了其他任何遇到此問題的人員。

3

你有沒有保證你的DOCTYPE和X-UA兼容正確

<!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"> 
+1

這是我做過的一件事,事實並非如此。但是,將其更新爲doctype並沒有解決任何問題。 添加兼容性標籤將完全停止它的工作。當您單擊以顯示預覽時,它會將屏幕抹掉,就像IE已鎖定一樣(遊標在進入窗口之前仍保留最後一種類型)。 我也更新了一些附加信息的問題。 – Cyntech 2010-09-01 01:09:33

4

通過迫使它在兼容模式下重裝你後添加此意味着你會得到一個類似於以下內容的彈出窗口通知:「Internet Explorer遇到此頁面的問題,並且已經以兼容模式加載它」?

如果是這樣,那意味着你在IE中遇到了一個錯誤。被稱爲「硬斷言」這意味着佈局引擎崩潰(不是AV或任何令人興奮的,它剛剛進入不可恢復的狀態),因此IE嘗試通過使用舊的佈局引擎的一些內容提供給用戶

如果問題仍然出現在IE9中,請http://connect.microsoft.com/ie

感謝提交BUG!

+0

是的,這正是發生的事情。我會給IE9一個嘗試,看看它是否在那裏工作。 – Cyntech 2010-10-15 00:18:12

+0

只是IE9和Windows 7測試這個,它呈現的內容很好。謝謝您的幫助。 – Cyntech 2010-10-18 00:50:41