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
反对的理由
- 未来的IE9/9+能否真的正确兼容过去的版本?
- IE的体积会不会越来越大?比如1G?
- 浪费互联网流量资源。
- 如果实现多引擎间交互,比如主网页和内嵌iframe用不同版本的引擎时?
- 微软在鼓励大家用非标准代码开发网页?
- 期间的小版本如何处理?IE史上发生过补丁改变绘制的事情。
- 更多的安全漏洞?(绝大多数病毒都是通过IE网页漏洞传播的吧……)
部分评论:
是时候宣布浏览器间兼容性已经破产?
我们总是为MS修复网页,而不是MS为网页修复IE。
如果干掉IE,那么我们就没这么多问题了。
综合:A List Apart2篇,John Resig,Dean Edwards,Safari,Mozilla,456 Berea Street消息