为什么IE9是网页设计师的噩梦
近来Web专业人士变得非常兴奋,原因也不令人意外。微软最新版的浏览器,Internet Explorer 9,刚刚发布。很多人都在讨论它的变化,以及最新的版本是不是实质的改进,或者是改进很小,改变太晚。
在前面的文章中,Jacob Gube对IE9有比较积极的评价。我来充当一个反对派角色,展示出它的另一面。
我与IE9的紧张关系
有一天早上我起来并查收我的Twitter消息,我看到一条令我非常兴奋的消息:IE9的第一个发行候选版发布了!
现在,在网页设计师当中,我可能是最怀疑IE的人之一我们现在不讨论IE6笑话但是在这次我体验了很多beta版本并看到了一些很好的工作。IE9真的不一样。
我立刻下载了它,并开始安装过程。一切顺利。然后我执行了必须的微软重启这已经是2011年了装一个软件还需要重启计算机,无所谓了,死不了之后我打开了这个浏览器。
到此为止,事情比我想像中的要顺利。然而正是在这刚开始使用的时候,我对IE9的负面体验出现了。我访问我自己的网站看看会是什么样,我想只有下面这张图的面部表情可以准确表达我看到内容之后的感受:
如果我开发网络摄像头,你应该会看到这样的表情。
我的网站完美组织的布局被破坏了。它不但渲染得很差,而且渲染缺陷实在是太大了以至于再多的IE条件注释都解决不了它们。(亲爱的IE9,26岁的小伙子头上长了白头发一点都不酷。)
这时,我做出了许多出格举动:我大叫不不不不不不不!!,太大声了以至于街上的一只狗都咆叫回应。
幸运的是,我可以使用XUA Meta hack解决这个问题(对于语义的和良好组织的标记语言来说都是多余的)。
可能这些bug会在最终发布的版本解决。但是我是个现实主义者,我觉得可能没有那么幸运。
IE正在改善
在大家在下面写评论,用IE9中许多值得赞扬的新特性反驳我之前,我应该说明微软在改进它的浏览器上做了很多工作。而且事实上,我们比其他任何人都更需要这个更新。
所以,在讨论使得我憎恨IE9的原因之前,必须先说一下它的一些好的方面。
首先,虽然很多人可能不承认,但是IE确实是我们现在所提的web标准的先驱。他们是发明家。我们今天所能看到的网页就是他们早期工作的直接结果。
可以这么说,微软推动的改变并不总是能达到目的,但是没有像IE6这样的浏览器,我们可能不会看到像CSS3中overflow-x和overflow-y这样的属性,网页字体,Ajax,与及一度有用的条件注释(我们开发过程中的救世主)。IE9中的新特性让我很感动,它们值得拥有。
另外,我特别喜欢微软拥抱HTML5和CSS3的方式。虽然在每一个方面都不是很完美,但是我们从它现在支持的标准中至少应该看到微软正努力提高浏览器的体验。
而更令人惊喜的是,微软正在测试过程中的对透明度的支持(让每个人获得测试版本并倾听反馈)真正地让它们的浏览器回到通往成功的道路上来。
IE9会是新的IE6吗?
从一开始,早期的警示信号就出现了,人们批评微软对引入HTML5和CSS3的选择(包括未完成的标准),认为当它过时的时候,糟糕地渲染(已经存在)和将来的改变可能会让这个浏览器陷入像IE6一样的困境。其它浏览器频繁的发布周期和自动更新(默认的)可能会将这个问题最小化,但是IE总是如此缓慢的主版本发布过程,它将很可能会成为2020年的IE6!
如了鲍尔默还有谁能把我们从这些问题中解救出来?
此外,在反馈程序里报告的bug数量超过5000个以及IE团队感谢jQuery团队更新它们的JavaScript库以对IE9友好的公告让我怀疑这会是我们暗淡的前景。
Microsoft Connect:接近5300个公开问题报告(我的问题也在其中)。我的天哪!
程序员,设计师以及服务提供商针对新的浏览器修补他们的代码时总是提心吊胆。如果浏览器遵从标准,这些bug可能一开始就不会出现在那。
在一个新浏览器出来之前是否很严峻地需要修补代码?事情会变得到底有多糟糕呢?
回顾一下hasLayout的日子,这些问题看起来和我们以前遇到过的一样。是的,微软自从IE6以来走了很长的路了,是的,它也尽全力使它的浏览器跟上时代。但是在谈到它做得有多好的时候至今当已知的问题还留给我们去解决的时候它还宣称自己比竞争对手好看起来是无法原谅的。
营销机器
在一份致微软的信中,Mozilla声明微软吹嘘的IE9对标准的高度支持是不准确的。微软总是有针对IE有效的营销策略,基于它实质上有偏差的声明和不准确的调查。
Mozilla发表此声明以示IE的公告有多么地不准确。
然而营销不能改变浏览器本身,这些误导消费者的处理方式,不管是过去还是现在,都是在为IE建网站的人的伤口上撒盐。
没错,微软的新浏览器离完美还差得远,也没有哪个浏览器能做得十全十美。所有其它浏览器也有它们的缺陷和bug,缺失技术以及不完整的标准实现。
但是,微软的问题在于它对自己的装扮以及它有时令人失望的走一步退两步的方式。
IE9是一款现代浏览器吗?
想了解这一点,我们只需要查看微软Tim Sneath的一篇博文,他专注于什么构成现代浏览器。他反驳Mozilla的公开信的主旨是我关注的地方。
现代浏览器不是实物而是努力
首先,Sneath声称Mozilla狭隘地定义了现代浏览器。而我个人赞成Mozilla按其自己的术语对现代浏览器的定义,如果Mozilla放宽它的定义,微软可能会做得更糟糕。
下面我以自己的理解摘取了一些Sneath的观点来说明为什么IE9不是现代浏览器。
现代浏览器更快。他们通过GPU充分利用潜在的平台来渲染图像, 利用多核CPU来编译和执行JavaScript并使得Web程序运行起来尽可能的快就像本地程序一样
新版本的IE改进了界面,速度和可用性,并且IE9的渲染速度确实能很好的与其它浏览器抗衡。但是谈到浏览器自身的速度(以及相对于Chrom和Opera更凭直觉的界面),这些不同依然很无力。窗口和标签加载时间很不给力,除了渲染引擎,界面真是比不上其它任何一款浏览器。
设置菜单就是IE9的界面不一致的简单示例。比如,F12开发者工具,这是我在产品中见过的最烂的设计;为了保持一致性,它应该是像查看下载这样的选项。
RSS和Atom通知功能不知道为什么从地址栏消失了,取而代之的是我们必须使用更不明显(而且是默认隐藏的)的命令栏。想想你如果不搜索一下的话如何打开命令栏。如果这对你这样的科技达人来说都比较困难,想像一下对于上年纪的用户会是什么样子。
让刷新和停止按钮分开也是相当多余的;这些浏览器按钮就像灯的开关,在页面渲染的时候,你要么就是想刷新要么就是想停止页面。
这只是一些IE9让浏览器UI感觉很粗糙的简单例子。
现代浏览器支持丰富的令人沉浸的体验,这种体验目前只能通过插件或本地应用程序来实现。他们可以在不牺牲性能的情况下无缝地混合视频,失量和光栅图像,音频和文字。
这好像指的是像Flash和HTML5这样的技术,IE9在这些方面做得很好,特别是配合硬件加速,在Windows平台上它甚至能在CPU占用率方面超越Chrome(如下图)。
浏览SunSpider时,IE9与Chrome在Windows Vista下CPU使用率的对比。
现代浏览器在特性准备好了才去实现它,提供可预言的模式,开发者可以依赖,而不是突然停止或移除标准。他们不为了通过合成测试而写半成品的实现,而是通过确认可操作性的测试套装来验证
虽然在渲染引擎中保持旧的标准可以看作是一个一些开发者可以以来的很有用的兼容特性,但是我不能理解为了那些愿意升级的人维护一个如此老旧的标准如何可以称之为现代浏览器。
web变化了,并且需要标准化。继续支持旧标准(就像旧浏览器一样)只会使得兼容性在长久上很难实现。如果旧代码仍然被支持,那么设计者就没有创新动机(除非他们有需求或兴趣)。以现状看来,这个产业已经有很严重的代码,语法,标准质量差的问题。必须兼容老式代码可能会打击设计者更新它们知识的意愿。虽然现在这可能不是什么问题,但是我们可以不需要含停滞,特别是在专利技术上。
另外一个问题是不像IE8IE9不支持Window XP(一款看上去还很坚挺的操作系统),在这个系统上可能可以夺取许多用户以让他们享受现代浏览器的好处。
对于Sneath提到的确认可操作性的测试组合,正如我们在IE的生命周期中所看到的一样,测试组合条目的数量从来没有对浏览器的渲染稳定性带来变化。为什么现在它现在就可以呢?
现代浏览器对标准的支持在一个早期阶段,因此开发者可以体验和验证新的标准,而不是对于一些不稳定的原型也这么做
最终这个免责声明支持了我对IE9不看好的想法,这也是为什么网页设计师在未来的一段时间内还需要忍受。对于IE的每一个新版本,想让使用者升级都是一个挣扎。IE6今天还在使用。这看起来一切都还好并且允许实验是好的,但是它些存在的标准被主要的Internet用户所授受,具有间歇性升级周期的浏览器(像IE9)无疑使得平均的网页设计测试过程变得更加复杂。
为什么它很重要
我对浏览器的批评不是起源于于它如何引起我的不满;远远不是。这款浏览器改进了,并且它将会帮助我们将一些现代特性带给观众。
IE9是不是现代浏览器呢?在我看来,不是,仅仅因为生命周期的这些问题,补丁支持和其它浏览器(虽然不完美)正在努力创新。
网页设计师应该在这里对每个新的浏览器挑刺,而IE好像就是另一个追赶发行,还有我们以前看到的一样的问题。Web正在进化,人们用来访问它的工具和技术也在进步。只有适应需求的浏览器才能生存下去。
IE9是一款好的浏览器吗?是的。它和它的竞争者处在同一个水平么?可能是吧。在它的生命期它能保持住吗,IE可以活到第10个版本吗?我不太确定。
对于IE9来说,未来是可以争取的。
对于我来说,还是要回到工作中去,为又一个微软的浏览器写补丁和hack。