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中这样做).
问题是:什么是不可思议的,无证的原因?
经过长时间的调试会议(使用旧学校的警报来查明失败的地方),这个看似天真的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)
以下内容来自MSDN文章" 控制默认呈现 ".
这些链接提供了其他信息,描述了Internet Explorer如何确定网页的相应文档模式:
我知道你已经有了答案,但今天我一直在寻找导致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