代码之家  ›  专栏  ›  技术社区  ›  Cyntech

IE8在向div插入数据时强制使用兼容模式

  •  3
  • Cyntech  · 技术社区  · 16 年前

    我一整天都在和IE8的兼容模式作斗争,我马上就要放弃它了。

    我有一些代码,它使用jQuery1.2(是的,它是旧的-无法更改),在我们的web应用程序中搜索一些记录。可以单击搜索结果来查看记录的内容(通过使用.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:删除这些重复的标签并不能解决问题。

    编辑二:这个问题还没有解决。这仅仅是IE8不能正确显示的事情之一,并将其归结为浏览器怪癖吗?我真的很感激你在这方面的帮助。

    3 回复  |  直到 15 年前
        1
  •  4
  •   EricLaw    15 年前

    你的意思是说你得到一个弹出式气球通知,上面写着这样的话:“Internet Explorer遇到了这个页面的问题,并且已经在兼容模式下加载了它”?

    如果是这样的话,那就意味着你在IE中遇到了一个bug。所谓的“硬断言”意味着布局引擎崩溃了(不是AV或任何令人兴奋的东西,它只是进入了一个不可恢复的状态),因此IE试图向用户提供 一些 通过使用旧的布局引擎创建内容。

    http://connect.microsoft.com/ie

    谢谢!

        2
  •  3
  •   Jason Jong    16 年前

    你确定你的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">
    
        3
  •  2
  •   Community Mohan Dere    9 年前

    在一位同事也做了一些搜索之后,我们发现了这个 here on SO ,已经证实了最大高度导致了IE8中的一个硬断言,证实了它确实是IE8中的一个bug。

    我们使用max height作为插入内容的div的样式,从而导致了硬断言。上述相关问题对于遇到此问题的任何其他人都有解决方法。

    推荐文章