[译] W3C vs. WhatWG HTML5 标准 - 差别记录

原文地址:http://developer.telerik.com/featured/w3c-vs-whatwg-html5-specs-differences-documented/html

几周之前,HTML5成为W3C的一个正式推荐。我在SitePoint上针对这一事件讨论了5个有趣但如今过期的功能
问题在于W3C标准是同一硬币的一面。从HTML的这个版本开始,开发者和浏览器供应商能够在相同标记语言的两种不一样风格之间进行选择:W3C开发的规范和WHATWG开发的规范。html5

译者注:WHATWG:Web Hypertext Application Technology Working Group,网页超文本应用技术工做小组,是一个以推进网络标准为目的而成立的组织。(为了准确,后面不作翻译)web

就大部分而言,这些规范都是相同或者说很是类似的,可是几年过去以后,愈来愈多的差别出现。你会关心他们吗?在大多数状况下不会,由于它对你和你的项目差别很小,或者浏览器供应商会支持这两个标准。然而,在短时间内,那些影响已给定功能实现的差别可能对你比较重要。每一个浏览器供应商遵循规范都有本身的需求。例如来自于Mozilla的David Baron目前声明算法

当W3C和WHATWG的HTML标准不一样时,咱们倾向于遵循WHATWG标准。api

在这篇文章里,咱们将解决W3C和WHATWG标准之间的一些差别,在每一个部分的结尾我会给出我对差别的见解。这并非一个全面的列表,可是足够让你在这个问题有本身的观点。浏览器

"HTML5" vs "HTML 现存标准"

咱们以一个简单的主题来开始讨论差别:标准的名称。WHATWG标准的版本去掉了名字后面的"5"在2011年初改名为"HTML"。而后,又更名为"HTML 现存标准"来指定它将不断发展和再也不支持使用版本号引用。网络

相反地,W3C标准继续使用数字,正如介绍中提到的同样,最后一个稳定版本是5,例如HTML5。做为这一步的结果,该组织正在积极开发的标准被称为HTML5.1新版本。在HTML5.1里,一些HTML5里面的元素和属性将不会再有,例如正在讨论的dailog元素,monthweek类型的input网站

观点

我认为如今和2000年以前的世界变化太大了,由于技术以一个疯狂的速度发展着,尤为在web端。因此,删除版本号使其具备连续性听起来是比较合理地。然而,不是全部的浏览器都会自动更新或者以一样的速度发布(经常使用的术语是一个evergreen browser),因此将一组功能放到一个或者多个浏览器版本是有道理的。this

个人观点是,有一个版本能够供开发人员参考并作出更好的计划,直到每个浏览器都采用这一策略的快速发布和自动更新。不是由于,为了使用一些的功能去开发网站而须要检测浏览器的版本(你真的须要使用该功能检测),而是由于,咱们能够得到其统计数据使用一个特定版本的浏览器。使用这些统计数据,在合适的时间你能够采用一些功能在你的项目中。
polyfills 和 shims能够帮助你实现,可是把它们加到你的网站中你须要考虑权重?google

main 元素

main元素是最新增长标准中的其中一个,不一样的标准对于它有不一样的定义。W3C标准定义为页面的主要内容 - 内容是一个页面的主要主题或者一个应用的核心功能。标准还定义一个文档中不能出现一个以上的main元素,而且main元素须要搭配role="main"或者其余等效性的APIS。

根据这个标准的一个简单的例子以下所示:

<body>
   <header>
      <h1>Main title</h1>
   </header>
   <main>
      <article>
         <h1>Main title</h1>
         <p>This is the content of this section</p>
         <footer>
            The author of this content is Aurelio De Rosa
         </footer>
      </article>
   </main>
   <footer>
      <small>Copyright © Aurelio De Rosa 2014</small>
   </footer>
</body>

WHATWG标准不给main元素分配任何语义值,它定义为其余元素主导内容的容器。若是你坚持WHATWG标准,它没有限制你使用main元素的次数。所以若是你在一个页面中有多个article元素,你须要使用main元素标记每一个article的的内容。

使用基于WHATWG标准的一个例子是:

<body>
   <header>
      <h1>Main title</h1>
   </header>
   <main>
      <article>
         <h1>Main title</h1>
         <main>
            <p>This is the content of this section</p>
         </main>
         <footer>
            The author of this content is Aurelio De Rosa
         </footer>
      </article>
   </main>
   <footer>
      <small>Copyright © Aurelio De Rosa 2014</small>
   </footer>
</body>

请注意,在上面的代码中,我使用了两次main元素。

观点

关于main元素,我与W3C见解一致,由于我质疑在一个文档中有多个主要区域的需求。此外,我记得 Steve Faulkner(W3C的标准的编辑)屡次敦促 Ian Hickson(WHATWG标准的编辑)在WHATWG邮件中提供可以证实须要多个主要区域的数据。结论是,在全部的场合WHATWG编辑提供这些数据失败。

hgroup 元素

hgroup元素用于组合一个或多个h1-h6的元素集合,对组织一个部分的标题和相应的子标题十分有用。

引入此元素以便于建立子标题,并解决文档轮廓算法的重要问题。实际上,将多个标题元素放在hgroup中,想象文档大纲应该是包含全部标题,但从最终的结果中看出只有最高级别的标题元素。

一个使用它的例子,来源于个人文章HTML5中5个过期的功能,以下所示:

<article>
   <hgroup>
      <h1>5 deprecated features of HTML5</h1>
      <h2>Sometimes specifications are changed
      and you need to refactor your code</h2>
   </hgroup>
   <p>In this article we'll discuss...</p>
</article>

2013年4月因为缺少实现,用例不足和促进标记反面模式而从W3C标准删除。相反地,WHATWG标准还包括ghroup

观点

正如引用文章中所说,我一直是这个元素的粉丝可是我弃用了它。第一个缘由是,我是W3C标准的一个追随者。第二个缘由是,我注意到对这个缺少兴趣和在浏览器中实现。

Web Notifications API

Web Notifications API定义是为终端用户提供通知的一个API。一个容许提示用户当前网页以外的通知,例如电子邮件传送。每当用户收到了一封新的电子邮件都须要通知用户或者有意见事情须要他们关注。一些具体的例子是若是有人在twitter发文,或者发了一张照片在Facebook或Google+。

使用此API的简单例子以下:

Notification.requestPermission(function() {
   var notification = new Notification('Email received', {
      body: 'You have a total of 3 unread emails'
   });

   notification.onshow = function() {
      console.log('Notification shown');
   };
});

Web Notifications API在W3C标准WHATWG标准都有明确的规定,两个版本之间有一些差别。特别地,WHATWG标准去掉了oncloseonshow事件。所以,W3C标准定义了4个事件(onclick, onclose, onerror, 和onshow),WHATWG标准只定义了两个(onclickonerror)。

若是你想了解更多API的不一样版本和主要浏览器的支持,你能够看看个人这篇文章Web Notifications API的状态

观点

标准之间没有太大的差别,可是它会影响你执行某些任务的方法。在这种状况下,我遵循W3C标准,我考虑的当我触发关闭事件的须要作执行某些操做,可是WHATWG不可能。

结论

在本文中咱们讨论了一些W3C与WHATWG标准之间最重要的差别。正如你看到的,考虑到标准中定义的元素和APIS的数量,仍是没有太多的差别。有了这一想法,就不会担忧将来,由于我相信标准最后都会和现实需求匹配,这意味着,无论哪一个组织开始一个新的功能都会有明确的规定,开发者和浏览器供应商都有权利去使用成功的一个或另外一个版本。所以,浏览器供应商和开发者是决定哪一个标准"成功"实施或者弃用他们的主导者。正由于如此,对于每个讨论的功能,最终都会该表标准以符合现实需求。

最后一点,若是你想发现更多的差别,你能够看W3C的这篇文章 W3C HTML5.1标准与WHATWG LS的不一样

相关文章
相关标签/搜索