我整天都在与 IE8 的兼容模式作斗争,我正准备对它扔砖头。
我有一些代码,它使用 jquery 1.2(是的,它很旧 - 无法更改),在我们的网络应用程序中搜索一些记录。可以单击搜索结果以查看记录的内容(通过使用 .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 代码的某个地方,这就是它在兼容模式下刷新的时候。我已经验证了 JSON,即 w3c 附带的 HTML 代码,一切都很好,我真的不知道发生了什么。
有谁知道我如何才能更好地找出导致它的原因,或者我应该在这些页面上强制使用 IE7 模式?
编辑:搜索是在屏幕顶部出现的 ajax“弹出窗口”中执行的。它的模板(基本 HTML)从一个单独的 HTML 文件中加载,并注入到原始页面底部的 div 中。这意味着会有嵌套的 HTML 文件(带有<html></html>
标签等)。这也会影响它吗?
编辑 3:删除这些重复的标签并不能解决问题。
编辑2:仍然没有解决这个问题。它只是 IE8 无法正确显示并将其归结为浏览器怪癖的那些事情之一吗?我真的很感激这方面的一些帮助。