3

我整天都在与 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 无法正确显示并将其归结为浏览器怪癖的那些事情之一吗?我真的很感激这方面的一些帮助。

4

3 回答 3

4

强制它以兼容模式重新加载是否意味着您会收到一个弹出气球通知,内容如下:“Internet Explorer 在此页面遇到问题并已在兼容模式下加载它”?

如果是这样,那意味着您在 IE 中遇到了错误。称为“硬断言”,它意味着布局引擎崩溃(不是 AV 或任何令人兴奋的东西,它只是进入了不可恢复的状态),因此 IE 尝试使用旧版布局引擎为用户提供一些内容。

如果问题在 IE9 中仍然存在,请在http://connect.microsoft.com/ie提交错误

谢谢!

于 2010-10-14T23:44:46.350 回答
3

您是否确保您的 DOCTYPE 和 X-UA-Compatible 是正确的

<!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">
于 2010-09-01T01:01:55.283 回答
2

在一位同事也进行了一些搜索之后,我们在 SO 上找到了这个,已经确认 max-height 在 IE8 中导致了一个硬断言,确认它确实是 EricLaw 发布的 IE8 中的一个错误。

我们将 max-height 用于插入内容的 div 的样式,进而导致硬断言。上面链接的问题可以解决遇到此问题的其他任何人。

于 2010-11-09T06:04:29.303 回答