IE7 相对于 IE6 有什么改进之处?

15

在 Web 开发社区中,经常听人们抱怨开发 IE6 的困难。但是,如果您使用类似 jQuery 这样强大的 JavaScript 框架进行开发,那么开发 IE6 是否与开发 IE7 有所不同呢?


7
jQuery无法解决你的CSS问题。 - Rosdi Kasim
1
在我们的项目中,我们不会为ie6提供任何支持,因为它已经死亡了。 - Mohit Jain
8个回答

16
  • 它能够正确地显示具有alpha通道的PNG图像。
  • 盒子尺寸的计算与标准差距不大。
  • 渲染和JavaScript性能实际上可以让你做一些花哨的事情,而不会时不时地使用户的机器冻结。
  • 解决了一些安全问题。

与其他浏览器相比,它并没有任何改进,因为其他浏览器在同样的时间内取得了更大的进展。它仍然是主要浏览器中最差的,对开发人员来说是一种痛苦的经历。


@Delan - 不准确的是用一句话总结你发布的维基页面。该列表中大多数IE漏洞都是针对IE6的,共463个,而这是从2000年的一份报告中得出的,并没有说明今天仍存在哪些漏洞。 - jaywon
@Delan - 我并没有说所有问题都已经解决。但确实有一些问题得到了解决。毫无疑问,IE7和8仍然是一个可怕的混乱。 - selfawaresoup
1
@Delan - 另外,问题是“什么比IE6更好?”而不是“什么仍然存在问题?” - selfawaresoup
1
@Delan 请注意,这是IE6和7之间的比较,而不是IE和其他制造商之间的比较。从IE6到IE7,性能显著提高。 - Justin Johnson

13

IE7支持png透明度,这对于维护网站的图形资源来说是一个巨大的帮助。


9

我会补充一些尚未列出的要点:

  1. 严格遵守CSS宽度:IE7在标准模式下会严格解释CSS中的width样式。在IE6中,如果子元素的width大于父元素,则通常会忽略父元素的width声明并扩展以适应子元素,通常需要使用overflow: hidden进行hack以确保父元素不会扩展。

    这在大多数情况下是好的,但不幸的是会引入其他一些怪异行为,例如,在带有CSS overflow设置为overflow:autoscroll的滚动DIV中使用<table style="width: 100%">将使表格扩展到包括垂直滚动条的宽度,因此表格的一部分将被右侧的滚动条截断。

  2. 禁用DirectX过滤器的Cleartype: IE7禁用了具有DirectX过滤器(如Alpha透明度和渐变)的元素的Cleartype(LCD显示器上的字体平滑)。这在某些方面是好的,因为Cleartype会使具有过滤器的元素,特别是加粗的元素非常模糊/模糊,但是这是不好的,因为它现在在LCD上呈现文本块状和锯齿状。
  3. 修复SELECT z-index bug: IE7修复了一个bug,其中SELECT元素具有无限z-index,并且始终位于其他元素之上,除非您在SELECT和要显示在其上方的元素之间放置一个IFRAME。这对菜单等造成问题。

  4. CSS伪类改进:现在支持:hover和其他一些类似的CSS状态,超出超链接范围。

  5. 性能不一定提高:IE7在其VML引擎中引入了许多错误,在IE8中,当处于标准模式下时,VML现在比IE7慢10倍,因此总体来说并不好。此外,我有测试用例表明,在我的Web应用程序中,在IE7标准模式下查找鼠标事件中的offsetLeftoffsetTop也可能比IE6慢10倍左右。

    在怪异模式下的IE6、7+8中,VML和offsetLeft/Top的性能大致相同。我的经验是,在IE7标准模式下,它实际上比IE6的标准模式慢得多,尽管它肯定更加兼容。

    我认为这是一把双刃剑,因为原始JavaScript性能确实有所提高,因此像使用数组方法和for循环之类的东西确实有所改善,尽管我认为渲染引擎和许多相关的DOM方法在IE7+的标准模式下变得更慢了。


6

在我看来,IE6和IE7之间存在很大的区别。

  • IE7内置支持XMLHTTP,而在IE6中需要使用ActiveX控件。
  • IE7支持一些额外的伪类。
  • IE7修复了z-order和缩放方面的一些问题。
  • IE7修复了“一些”盒模型问题。
  • IE7添加了对>子选择器的支持。
  • IE7添加了对相邻的(+)选择器的支持。
  • 添加PNG透明度支持。

IE7实现的XMLHttpRequest对象非常糟糕,一些库例如jQuery更喜欢使用ActiveXObject(如果可用)来避免这个问题。 - Christian C. Salvadó
@CMS - 尝试为标准化使用IE6且不允许ActiveX控件的公司构建一个启用AJAX的站点。对我来说,这是天赐之物,因为它意味着我实际上可以使用AJAX。 - Thomas

2

我认为IE7最大的改进是基于性能(Javascript)和试图更加接近CSS标准。

以下是我能想到的一些重大改进:

  • 修复双倍边距错误
  • 修复了许多有关框模型和定位继承的问题
  • 将开发人员工具栏包含在浏览器中(不是一个错误修复,但对我来说非常重要)
  • 正如其他人所指出的那样,在处理PNG图像方面表现得很好

与IE6相比,它是一个更好的浏览器,但与今天的其他浏览器相比则不太如此。


1

说实话,就IE7在标准兼容性方面的提升而言,它微不足道。直到今天,包括IE8在内的所有版本的Internet Explorer都存在JavaScript、CSS和DOM实现上的严重问题。你为IE6使用的大多数hack仍然适用于后续版本。但是好消息是,IE9正在变得越来越好,已经取得了很大进展(我从未想过我会真正这么说)。

规范与Firefox和Chrome等其他浏览器之间的差距和实现差异要小得多。

我建议阅读Mark Wilton-Jones关于IE众多缺陷的文章以获取更多信息。


2
我真的希望IE9能够变得更好,但是IE9平台预览版让我非常失望,许多旧的错误和JScript偏离ECMA-262标准的问题仍然存在,并且它几乎没有新的ECMAScript第5版标准的任何内容... - Christian C. Salvadó
与 IE 以前的改进水平相比,这是一个重大的进步。但与其他浏览器每天改进的速度相比,它微不足道。 - Delan Azabani
又是一个糟糕的链接,那篇文章谈论的是IE7 beta版本作为最新版本。我同意你的想法,但如果你要包含参考资料,请选择更可信和更新的内容。 - jaywon
我遇到的大多数网络设计师似乎不同意你的看法。IE 7仍然不怎么样,但比6要好得多,而6是为了与Netscape Communicator竞争而设计的。你似乎对IE有一种意识形态上的偏见,这导致你忽略了改进,如果仍存在缺陷,就会相信任何发表负面言论的来源。 - Chuck
Chuck,我认为你对我的回答的看法是错误的。“IE9正在变得相当不错”证明我对IE的改进持开放态度(如果它们确实有所改进,而它们最终也确实有所改进)。 - Delan Azabani
显示剩余2条评论

1

Javascript和CSS框架可以最小化IE6引起的损坏,但是IE6和其他浏览器之间仍然存在一些错误和不一致性。

IE7比IE6好一点,但也只是勉强而已。


1

就我个人而言,IE6 最让人烦恼的事情就是它不支持 PNG 透明度。这导致必须使用 AlphaImageLoader 来处理图片。这样做会引入自己的 bug/无法实现的功能。例如,使用 AlphaImageLoader 的透明背景不能重复。

此外,还存在一些 bug,比如双倍边距问题、不支持 min-height 和 min-width、向浮动元素添加额外换行符以及缺少 CSS 选择器等。


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