IE9中的IE7/8模式与实际运行IE7/8相比如何?

21

我正在尝试确认这件事情,以便我们不必在IE7和IE8中进行测试时使用单独的虚拟机。我通常只是使用IE9(F12)中的开发人员工具并更改浏览器模式和文档模式来进行IE7和IE8测试。

那么,这种方法与在“真正”的IE7和IE8中进行测试相比如何?有人做过比较或看到了详细说明吗?

我认为IE7和IE8渲染引擎只是包含在IE9中,并且它只是使用这些引擎。还有其他需要知道的吗?


2
我很想知道其他人的想法,但我们刚刚转向使用虚拟机,因为客户发现在我们基于IE9的IE8模式测试中运行本机IE8(所有插件已禁用等)存在差异。 - Kieron
谢谢Kieron。如果你知道具体的事情,请告诉我好吗? - Josh M.
对我们来说,实际上存在样式差异以及行为差异。似乎 JS 引擎在这两个版本之间没有产生一致的结果。 - Kieron
2
这个问题的IE10版本在http://stackoverflow.com/q/14317360/841830。如果比我更有知识的人能够发表答案,那就太好了。 - Darren Cook
3个回答

58
我总是使用真正的浏览器。以下是三个IE 9的IE 7模式与真正的IE 7有所不同的示例:
  1. 这里显示了一个透明PNG图像出现和消失的页面。在真实的IE 7中,您可以看到图像边缘周围的黑暗区域,但在IE 9的IE 7模式中则没有。

  2. 在真正的IE 7中,Base64图片无法使用,但在IE 9的IE 7模式中可以。您可以在这里测试。

  3. 这里显示了一个应用了zoom: 1px;CSS的段落。在真正的IE 7中,段落看起来非常小,但在IE 9的IE 7模式中则不是这样。

我还有十二个IE 9的IE 8模式与真正的IE 8有所不同的示例:
  1. 这里显示了一个缩放为50px × 50px的256px×256px图像。在真正的IE 8中,边缘看起来很平滑,但在IE 9的IE 8模式中则不是这样。

  • CSS bug 9来自James Hopkins IE 8 bug列表(JHIE8B),不影响IE 9的IE 8模式(测试案例备用测试案例)。该bug的描述是“使用MS Sans Serif字体时,项目符号(填充的圆点)列表标记渲染错误”。

  • CSS bug 15来自JHIE8B,不影响IE 9的IE 8模式(测试案例备用测试案例)。该bug的描述是“一个包含IMG的内联框的下降空间(垂直对齐:基线,并且没有包含文本的同级行框)仅在:hover上绘制,嵌套在A元素中”。

  • CSS bug 22来自JHIE8B,不影响IE 9的IE 8模式(测试案例备用测试案例)。该bug的描述是“当动态插入属性时,content属性不返回属性的值”。

  • CSS bug 31来自JHIE8B,不影响IE 9的IE 8模式(测试案例)。该bug的描述是“当使用@import导入这些样式规则时,标记框不继承附加到其上的元素的样式”。

  • 来自JHIE8B的CSS bug 38不会影响IE 9的IE 8模式(测试用例)。该bug的描述为:“匹配一个元素的规则集,其中包括float值、max-height值和overflow值为scroll,将导致完全页面空白(强制标准模式)或兼容性视图回退”。

  • 来自JHIE8B的CSS bug 56不会影响IE 9的IE 8模式(测试用例)。该bug的描述为:“相对定位后代的堆叠上下文(具有比其包含块更低的堆叠级别)在包含块的堆叠级别因重置以反映默认的从前到后顺序而重新计算时,不会在它的升级:hover(或:active)时重新计算”。

  • 来自JHIE8B的CSS bug 57不会影响IE 9的IE 8模式(测试用例)。该bug的描述为:“带有visibility:hidden的内联元素,或者紧接在父级的结束标记之前或者紧接在父级的开始标记之后并且紧接在父级的结束标记之前,防止text-decoration值为underlineoverline被应用到行框上”。

  • CSS bug 60来自JHIE8B,不影响IE 9的IE 8模式(测试用例备选测试用例)。该bug的描述是“等效于 table-cell 元素的匿名表对象内部的文本无法被选择”。

  • CSS bug 62来自JHIE8B,不影响IE 9的IE 8模式(测试用例备选测试用例)。该bug的描述是“半透明元素及其内容剪切时(父级应用了overflow:hidden),在溢出父级框时,在提供溢出边界的外侧边缘上经历1像素与透明度相关的渗漏”。

  • CSS bug 65来自JHIE8B,不影响IE 9的IE 8模式(测试用例备选测试用例)。该bug的描述是“当:first-child伪元素应用了background-image时,应用到其关联元素的另一种background-image不会显示”。

  • JavaScript bug 1来自JHIE8B,不影响IE 9的IE 8模式(测试用例备选测试用例)。该bug的描述是“在一个for循环中使用querySelectorAll语句并且其中有一个break,会导致整个程序崩溃。”。

  • 使用多个虚拟机还是有点不方便,但至少它们是免费的,而且它们也可以在VirtualBox中使用。


    编辑 1 (2012-08-21 19:40:46Z):添加了IE 9的IE 8模式与真正的IE 8表现不同的示例。

    编辑 2 (2012-11-16 08:11:42Z):更新了第一个IE 9的IE 7模式与真正的IE 7表现不同的示例中的链接,并添加了第三个示例。

    编辑 3 (2012-11-22):添加了11个IE 9的IE 8模式与真正的IE 8表现不同的示例。


    太好了,感谢提供示例、信息和VPC镜像链接 - 真是太棒了!这真的很棒;微软真是太体贴了! - Josh M.
    刚发布的IE10预览版不像IE的早期版本那样限制CSS文件的数量,http://john.albin.net/css/ie-stylesheets-not-loading。而且,在IE 10中的浏览器模式也没有模拟这个限制。 - Harri
    非常感谢,确认这些怀疑是很好的。 - iono
    1
    只是为了补充那个答案。我最近测试了一下,IE 10在所有浏览器模式下都可以正确地呈现Web字体,而它们的真实对应物甚至不支持它们。 - Ale Morales

    3

    除了Nick的回答以外,以下是IE9在IE7模式下与真正的IE7有不同行为的两个例子:

    1. localStorage在IE9-in-IE7-mode中可用,但在IE7中不可用。
    2. sessionStorage在IE9-in-IE7-mode中可用,但在IE7中不可用。

    这让你想知道,在IE9中实现的多少其他Web API会在IE9-in-IE7-mode中工作...


    1
    在IE10中,存在一系列非常相似的问题,这使得浏览器和文档模式不适合进行可靠的测试。
    许多在IE 7和IE 8中有效的过滤器,在文档和浏览器模式下无法正常工作。

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