我原以为它们是相同的东西,但我刚刚发现它们不一样!
使用IE8,我可以以3种不同的方式显示同一个网页:
标准模式。XHTML Strict DOCTYPE位于网页顶部。
与上述方式相同,只是在IE8中点击了“兼容性模式”。此时网页显示略微怪异。
如果我从网页中删除DOCTYPE(这会强制进入quirks模式?)。此时网页显示非常糟糕,并且与在“兼容性模式”下查看的内容不同。此时点击“兼容性模式”无济于事。
我原以为它们是相同的东西,但我刚刚发现它们不一样!
使用IE8,我可以以3种不同的方式显示同一个网页:
标准模式。XHTML Strict DOCTYPE位于网页顶部。
与上述方式相同,只是在IE8中点击了“兼容性模式”。此时网页显示略微怪异。
如果我从网页中删除DOCTYPE(这会强制进入quirks模式?)。此时网页显示非常糟糕,并且与在“兼容性模式”下查看的内容不同。此时点击“兼容性模式”无济于事。
Quirks模式基本上是IE5兼容模式。它的触发条件是没有有效的<!DOCTYPE>声明。主要影响是导致浏览器使用IE5的盒子模型,这意味着所有的填充、边距和边框,以及任何影响盒子大小的东西都会不正确。
兼容模式是IE7兼容模式(IE9还有IE8兼容模式),可以通过指定页面使用meta标签或用户浏览器配置来触发。
两者也可以在开发工具窗口中明确指定。
兼容模式偶尔用于测试(因为IE7没有开发工具窗口)和内部网站,其中公司过于吝啬以至于不能更新他们的代码以适应更新的浏览器。(但话说回来,兼容模式并非IE7的完全副本;它有自己的bug和问题,所以对于大多数测试,最好坚持使用真正的IE7副本。)
不应该使用Quirks模式。谁在正常情况下想要与IE5兼容呢?
IE8中的兼容性模式按钮通常会复制通过ie7浏览器查看网页的效果,这意味着如果存在文档类型,则将文档模式设置为IE7标准,否则将文档模式设置为IE5(或quirks模式)。
因此(假设没有覆盖正常行为的元标记),在情况1中,页面以ie8模式显示,在情况2中以ie7模式显示,在情况3中,无论是否使用兼容性视图,都是IE5(quirks模式)。
这里有一个页面 - http://www.nczonline.net/blog/2010/01/19/internet-explorer-8-document-and-browser-modes/,它比我更清楚地描述了Internet Explorer文档模式的混乱局面...