在 Web 开发社区中,经常听人们抱怨开发 IE6 的困难。但是,如果您使用类似 jQuery 这样强大的 JavaScript 框架进行开发,那么开发 IE6 是否与开发 IE7 有所不同呢?
在 Web 开发社区中,经常听人们抱怨开发 IE6 的困难。但是,如果您使用类似 jQuery 这样强大的 JavaScript 框架进行开发,那么开发 IE6 是否与开发 IE7 有所不同呢?
与其他浏览器相比,它并没有任何改进,因为其他浏览器在同样的时间内取得了更大的进展。它仍然是主要浏览器中最差的,对开发人员来说是一种痛苦的经历。
IE7支持png透明度,这对于维护网站的图形资源来说是一个巨大的帮助。
我会补充一些尚未列出的要点:
width
样式。在IE6中,如果子元素的width
大于父元素,则通常会忽略父元素的width
声明并扩展以适应子元素,通常需要使用overflow: hidden
进行hack以确保父元素不会扩展。这在大多数情况下是好的,但不幸的是会引入其他一些怪异行为,例如,在带有CSS overflow
设置为overflow:auto
或scroll
的滚动DIV中使用<table style="width: 100%">
将使表格扩展到包括垂直滚动条的宽度,因此表格的一部分将被右侧的滚动条截断。
修复SELECT z-index bug: IE7修复了一个bug,其中SELECT
元素具有无限z-index,并且始终位于其他元素之上,除非您在SELECT
和要显示在其上方的元素之间放置一个IFRAME
。这对菜单等造成问题。
CSS伪类改进:现在支持:hover
和其他一些类似的CSS状态,超出超链接范围。
性能不一定提高:IE7在其VML引擎中引入了许多错误,在IE8中,当处于标准模式下时,VML现在比IE7慢10倍,因此总体来说并不好。此外,我有测试用例表明,在我的Web应用程序中,在IE7标准模式下查找鼠标事件中的offsetLeft
和offsetTop
也可能比IE6慢10倍左右。
在怪异模式下的IE6、7+8中,VML和offsetLeft/Top
的性能大致相同。我的经验是,在IE7标准模式下,它实际上比IE6的标准模式慢得多,尽管它肯定更加兼容。
我认为这是一把双刃剑,因为原始JavaScript性能确实有所提高,因此像使用数组方法和for循环之类的东西确实有所改善,尽管我认为渲染引擎和许多相关的DOM方法在IE7+的标准模式下变得更慢了。
在我看来,IE6和IE7之间存在很大的区别。
>
子选择器的支持。+
)选择器的支持。XMLHttpRequest
对象非常糟糕,一些库例如jQuery更喜欢使用ActiveXObject(如果可用)来避免这个问题。 - Christian C. Salvadó我认为IE7最大的改进是基于性能(Javascript)和试图更加接近CSS标准。
以下是我能想到的一些重大改进:
与IE6相比,它是一个更好的浏览器,但与今天的其他浏览器相比则不太如此。
说实话,就IE7在标准兼容性方面的提升而言,它微不足道。直到今天,包括IE8在内的所有版本的Internet Explorer都存在JavaScript、CSS和DOM实现上的严重问题。你为IE6使用的大多数hack仍然适用于后续版本。但是好消息是,IE9正在变得越来越好,已经取得了很大进展(我从未想过我会真正这么说)。
规范与Firefox和Chrome等其他浏览器之间的差距和实现差异要小得多。
我建议阅读Mark Wilton-Jones关于IE众多缺陷的文章以获取更多信息。
Javascript和CSS框架可以最小化IE6引起的损坏,但是IE6和其他浏览器之间仍然存在一些错误和不一致性。
IE7比IE6好一点,但也只是勉强而已。
就我个人而言,IE6 最让人烦恼的事情就是它不支持 PNG 透明度。这导致必须使用 AlphaImageLoader 来处理图片。这样做会引入自己的 bug/无法实现的功能。例如,使用 AlphaImageLoader 的透明背景不能重复。
此外,还存在一些 bug,比如双倍边距问题、不支持 min-height 和 min-width、向浮动元素添加额外换行符以及缺少 CSS 选择器等。