我整天都在對抗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不能正確顯示並且把它放在瀏覽器的怪癖中的那些東西之一?我非常感謝這方面的幫助。
你確定你設置了正確的文檔類型嗎?也許有些東西與它混淆。 – Iznogood 2010-09-01 00:58:10
通過嵌套的html文件,你是否意味着完整的標籤?如果是這樣,我會刪除這些,所以你只加載頁面片段。對於許多事情,IE比FF/Chrome有更嚴格的解析器。這可能就是這種情況。 – Damo 2010-10-14 00:57:31
@Damo,是的,因爲內部HTML文件是一個單獨的模板文件(例如,主要模板爲assessment.html的searchcontent.html)。我曾想過這件事,我會試試看。 – Cyntech 2010-10-14 00:59:01