具体哪些因素会导致IE8触发兼容模式?

mty*_*son 32 html internet-explorer-8 ie8-compatibility-mode

我有一个应用程序,在某些情况下导致IE8弹出兼容性消息并在compat模式下重新加载:

显示问题导致Internet Explorer使用兼容性视图刷新网页

这是罕见的,据我所知,由于元标记不会发生.它发生在对改变DOM的用户操作的响应中.这是同样的问题:https://superuser.com/questions/215281/how-do-i-stop-ie-jumping-into-compatability-view,但我的问题是:什么类型的事情导致这种情况,如帮助修复它.

换句话说,请访问此站点thesitewizard.com,其中IE8中兼容模式的第三个原因描述为:

有时候,对于其他一些不可思议的,没有文件记载的理由,在符合标准的页面上(或者至少在候选版本1中这样做).

问题是:什么是不可思议的,无证的原因?

mty*_*son 7

经过长时间的调试会议(使用旧学校的警报来查明失败的地方),这个看似天真的dom操纵线是罪魁祸首:

document.getElementById("literal"+varValue).style.display = "none";
Run Code Online (Sandbox Code Playgroud)

这里没有错误,并且显然找到了元素(即,这不是花园品种空指针).

这是一个大型应用程序,这个代码周围有很多.我把它切换到以下,这显然阻止了这个问题:

setTimeout(function(){
           var layoutEl = document.getElementById("literal"+varValue);
           if (layoutEl)
               layoutEl.style.display = "none";
       },10)
Run Code Online (Sandbox Code Playgroud)

  • 对我来说,尝试隐藏特定元素导致IE8使用兼容性视图刷新页面.我正在使用jQuery,所以使用[.hide()](http://api.jquery.com/hide)并利用[持续时间](http://api.jquery.com/hide/#hide -duration-complete)选项完成了这个技巧,例如`$('#id').hide(1)`. (2认同)

jes*_*vin 5

以下内容来自MSDN文章" 控制默认呈现 ".


请注意,某些条件(如此处列出的条件)可能会强制Internet Explorer以不同于网页中指定的文档兼容模式显示页面.

  • 已为页面启用兼容性视图.
  • 该页面将加载到Intranet区域,并且Internet Explorer配置为对从Internet区域加载的页面使用兼容性视图.
  • 页面从用户的本地文件系统加载(这意味着页面加载在Intranet区域中),并且Internet Explorer配置为对从Internet区域加载的页面使用兼容性视图.
  • Internet Explorer配置为在兼容性视图中显示所有网站.
  • Internet Explorer配置为使用兼容性视图列表,该列表指定始终显示在兼容性视图中的一组网站.
  • 开发人员工具用于覆盖网页中指定的设置.
  • 网页遇到页面布局错误,并且Internet Explorer配置为通过在兼容性视图中重新打开页面自动从此类错误中恢复.
  • 该页面包含一个Web标记,用于指示它在特定区域中加载.

这些链接提供了其他信息,描述了Internet Explorer如何确定网页的相应文档模式:


Pie*_*mol 5

我知道你已经有了答案,但今天我一直在寻找导致IE8触发兼容模式的原因.我搜索了JavaScript代码,css(:first,:last等),但它似乎是一些内联样式:

最大高度与溢流相结合..

所以这个(也)触发了IE8中的兼容模式:

style="overflow:scroll;max-height:200px;"
Run Code Online (Sandbox Code Playgroud)

而这不是,所以它解决了我的问题:

style="overflow:scroll;height:200px;"
Run Code Online (Sandbox Code Playgroud)

编辑:我认为这是相关的: IE8溢出:auto与max-height