IE8将数据插入一个div当迫使兼容模式
题
我已经对IE8的兼容模式,整天打架,我关于它吸住一块砖。
我有一些代码,它用了jQuery 1.2(是的,它是旧的 - 不能改变),来搜索我们的web应用程序的一些记录。搜索的结果可被点击以查看记录的内容(通过使用.animate()它的行下打开的空间中,并创建另一个TR下方和插入HTML从JSON馈送的数据)。
在IE8,点击的结果,以查看该内容强制它在重载兼容模式,其中它适用于所有其他的浏览器(IE7,FF3.0 +,铬,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,HTML代码,与W3C出来,这一切都很好,我真的不知所措到发生了什么。
有谁知道我如何能够更好地追查什么原因引起的,或者我应该只是强制IE7模式在这些网页上?
编辑:搜索是在出现在屏幕的顶部的AJAX“弹出”执行。它的模板(基本HTML)是由一个独立的HTML文件中加载,并在原始页面的底部注入一个div。这意味着将有嵌套的HTML文件(<html></html>
标签等)。这是否也有影响吗?点击
编辑3:除去这些重复的标记没有解决该问题
编辑2:仍然没有解决这一点。难道仅仅是那些东西,IE8会显示不正常,并把它归结为浏览器的怪癖吗?我真的很感激一些这方面的帮助。
解决方案 3
在一个同事做了一些搜索,以及,我们在这里发现了这个上SO ,在那里它被证实,最大高度是造成IE8中硬断言,证实它确实是,在IE8作为EricLaw一个bug公布。
我们用最大高度为我们将内容输入到该div的风格,进而导致硬断言。上述链接的问题有一个变通为其他任何人遇到此问题。
其他提示
通过的它的力量在兼容模式下重装的你的意思是,你得到一个弹出气球通知,说是这样的:“Internet Explorer中遇到的问题,此页面,并加载它在兼容模式” ?
如果是这样,那意味着你已经打了IE中的一个bug。称为“硬盘断言”则表示该布局引擎崩溃(不是AV或任何刺激,它刚刚进入不可恢复的状态),从而IE尝试通过使用以向用户提供与一些内容较旧的布局引擎。
如果问题仍然出现在IE9,请通过 http://connect.microsoft.com/ie提交错误
谢谢!
你有你的保障和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">