IE8和网页标准

W3C终于发布了第一个HTML5草案,大家还沉溺在HTML2XHTML转换的快乐和痛苦中时,却又突然发现,HTML5和XHTML2,到底谁是未来?……,当然,HTML5和XHTML2会保持最大兼容性,W3C和WASP肯定比我们更清楚这一点的重要性。不过如果都“最大兼容”了,为何不统一呢?HTML那种不标准的代码解析起来可不怎么好玩。

我想抱怨的是,W3C的效率那是相当出名(就像IE实现标准的效率),现在第一个草案,正式定稿最早是2010年,这么算起来,要等IE支持(我坚信那时IE仍是主流浏览器),恐怕我们的显示设备原理和效果都升级换代了。到时再用一份“妥协”过的“标准”——拜托,这可是IT产业。很多美好的标准或技术,从我们开始期盼,到我们都不再编码,它都不会实现。

其实HTML5这事儿没多大动静,闹得正欢的是IE8实现“超级标准模式”的事儿,IE开发团队为了让只认识IE的,用IE6/7的所谓“符合标准”代码,错误的实现他们想要的样式的网页作者们不用修改他们的网页,决定让IE8在“标准模式”下实现IE7的显示结果,而实现“更正确”的标准需要在网页中加入一段META信息。

嗯,技术一点来说,IE6依靠DOCTYPE来区分怪癖模式(IE5.5或更早版本的绘制网页方式)和标准模式,但IE6实现的“标准模式”依然有许多错误,而当IE7改进“标准模式”时,这些“错误的标准模式的代码”就会展现出错误的样式。为了避免该问题再发生在IE8身上,IE团队决定使用一个META标签或HTTP包header来告诉浏览器,用“超级标准模式”来绘制网页,而现在的标准网页将默认为IE7的绘制方式。

再直白(或讽刺)一点,如果ACID2测试网页要想在IE8下正确表现,ACID2测试需要修改网页,加上一个META信息,告诉IE8用“超级标准模式”。真CCTV。

为过去的部分错误网页,IE要牺牲未来的网页。微软总是在用一个错误掩盖另一个错误,所以,我们总是要疲于解决浏览器间(准确地说是IE和其他浏览器)的兼容性问题。“不破坏现有网络”总是被当作微软的借口,事实上他们每次发布新版IE都“履行”了这点,总是有新bug推翻了这个借口。

当然,这个想法看上去,不是完全没有好处,至少我们可以让网页在IE下始终显示如一(来兼容MS犯下的错误)。可是,当IE9修正了IE8的错误标准时,我们该怎么办?如果还是需要IE条件注释或CSS HACK来解决的话,那这个标签有什么意义?还是说,微软以为这个标签就可以让大家都总是平滑听话的升级到最新的IE,就像Opera社区那样?

让IE永远用最新的版本绘制网页

<meta http-equiv=”X-UA-Compatible” content=”IE=edge” />

或者用HTML5的doctype

<!DOCTYPE html>

(IE6/7将以标准模式处理)
或者HTTP包header

X-UA-Compatible:IE=edge

反对的理由

  1. 未来的IE9/9+能否真的正确兼容过去的版本?
  2. IE的体积会不会越来越大?比如1G?
  3. 浪费互联网流量资源。
  4. 如果实现多引擎间交互,比如主网页和内嵌iframe用不同版本的引擎时?
  5. 微软在鼓励大家用非标准代码开发网页?
  6. 期间的小版本如何处理?IE史上发生过补丁改变绘制的事情。
  7. 更多的安全漏洞?(绝大多数病毒都是通过IE网页漏洞传播的吧……)

部分评论:
是时候宣布浏览器间兼容性已经破产?
我们总是为MS修复网页,而不是MS为网页修复IE。
如果干掉IE,那么我们就没这么多问题了。

综合:A List Apart2篇John Resig,Dean Edwards,Safari,Mozilla,456 Berea Street消息

来自http://www.5iya.com/blog/post/ie-web-standards-sucks.asp

版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *