IE8被强制使用兼容模式

8

我的团队正在开发一个UI比较复杂的网站,使用了jQuery、ASP.Net AJAX等技术。当然我希望我的网站能够兼容所有现代浏览器。但是有时候在测试或者开发过程中,IE8会告诉我页面不支持标准模式并且切换到兼容模式,但是它从来不告诉我原因。在IE8中是否有一些日志、报告、设置或其他东西可以让我知道是什么导致了IE8标准模式的错误?在FF、Chrome、Safari和IE7中一切似乎都很正常,那么IE8不喜欢什么,我该如何找到问题所在呢?


5
尽最大努力朝着标准方向努力,而不仅仅是让IE按照你的意愿去做,这样做加1分。 - T.J. Crowder
确切的错误信息是什么?有几种情况会发生这种情况,原因也不一样... 最糟糕的情况是 IE8 渲染器崩溃(!),然后它决定在 IE7 中再次尝试;在这种情况下调试 IE 是很困难的。 - bobince
2
原来问题是由我公司使用的Sophos病毒扫描器引起的:BHO与IE8存在一些冲突,导致IE降级到IE7模式。我们在Sophos论坛上找到了一些帖子,但并没有提供太多帮助。我们禁用了BHO,现在一切都很顺利。 - Matthew
4个回答

2
这个问题与你正在使用的样式有关,IE8布局引擎难以解释。不幸的是,没有全面的样式组合列表会触发这种行为。您可以通过转到“工具-> Internet选项->高级选项卡->浏览->取消选中'自动从布局错误中恢复...”来关闭自己机器上的自动恢复。
当然,这只适用于您的机器,如果触发了布局错误,则对您的客户没有任何好处。我没有针对您特定问题的答案,但建议使用W3C CSS验证器验证您的CSS: http://jigsaw.w3.org/css-validator/ 尝试一次删除一个复杂的样式,直到找到触发站点错误的组合。

1
可能不是真正的答案,但值得一提的是,如果它抱怨页面传递出错(例如,在您使用DOM对其进行操作之前),如果您将相同的页面通过W3C验证器传递,您应该能够找出它抱怨的内容。当然,验证器检查验证器对标准的解释(非常好,虽然可能不完美),而不是Microsoft对标准的解释(无评论),因此两者可能不总是一致的...

1
我想可能有几个问题会导致IE8切换到兼容性模式,但我在网站中发现的样式是在body标签上使用了一个伪元素。移除这个伪元素可以阻止IE8自动切换到兼容性模式。
移除了这个东西:
body:after {
    // This causes IE8 to freak out and change into Compatibility Mode!
}

0

请查看Quirksmode,以查看他们是否知道明显的原因。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接