将数据插入div时,IE8强制执行兼容模式
我整天都在与IE8的兼容模式进行斗争,而且我正准备对它进行抨击。
我有一些代码,它使用jquery 1.2(是的,它是旧的 – 不能改变它),在我们的网络应用程序中搜索一些记录。 可以单击搜索结果以查看记录的内容(通过使用.animate(),它在行下面打开一个空格,并在下面创建另一个TR并从json feed插入HTML数据)。
在IE8中,单击结果以查看内容会强制它在兼容模式下重新加载,在所有其他浏览器(IE7,FF3.0 +,Chrome,Safari)中它可以正常工作。 我一直在尝试使用IE8的开发人员工具栏来调试和追踪发生这种情况的原因,但我无法找到任何错误或任何可能导致错误的证据。
显示预览的代码:
// Code that binds a click to open the result preview: var _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 = $(" "); // 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的代码中,并在兼容模式下刷新。 我已经validation了JSON,w3c提供的HTML代码,一切都很好,我真的不知道发生了什么。
有谁知道如何更好地追踪导致它的原因,或者我应该在这些页面上强制使用IE7模式?
编辑:搜索是在屏幕顶部显示的ajax“弹出窗口”中执行的。 它的模板(基本HTML)从单独的HTML文件加载,并注入原始页面底部的div。 这意味着将有嵌套的HTML文件(带有标签等)。 这会影响它吗?
编辑3:删除这些重复的标签没有解决问题。
编辑2:还没有解决这个问题。 它只是其中一个IE8无法正常显示并将其归结为浏览器的怪癖吗? 我真的很感激这方面的一些帮助。
通过强制它以兼容模式重新加载你是否意味着你得到一个弹出气球通知,上面写着:“Internet Explorer遇到了这个页面的问题并且已经以兼容模式加载了”?
如果是这样,那意味着你已经在IE中遇到了一个错误。 被称为“硬断言”意味着布局引擎崩溃(不是AV或任何令人兴奋的东西,它只是进入一个不可恢复的状态),因此IE尝试通过使用旧的布局引擎为用户提供一些内容。
如果问题仍然出现在IE9中,请在http://connect.microsoft.com/ie上提交错误
谢谢!
您确保您的DOCTYPE和X-UA兼容是正确的
然后在之后添加它
在一位同事做了一些搜索之后,我们在SO上找到了这个,在那里确认了max-height在IE8中引起了一个硬断言,确认它确实是IE4中的一个错误,正如EricLaw发布的那样。
我们使用max-height作为我们插入内容的div的样式,反过来,导致硬断言。 以上链接的问题可以解决遇到此问题的任何其他人。