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

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

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

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

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

当W3C和WHATWG的HTML标准不同时,我们倾向于遵循WHATWG标准。

在这篇文章里,我们将解决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),所以将一组功能放到一个或者多个浏览器版本是有道理的。

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

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的不同

原文地址:https://www.cnblogs.com/jlfw/p/12596436.html

时间: 2024-10-29 09:32:18

[译] W3C vs. WhatWG HTML5 标准 - 差异记录的相关文章

W3C vs. WHATWG HTML5 Specs – The Differences Documented

A few weeks ago, HTML5 became an official W3C Recommendation. I took advantage of this event to discuss 5 interesting but now obsolete featureson SitePoint. The problem is that the W3C specifications are only one side of the same coin. Starting from

HTML5标准成形:浏览器竞争会消停吗?

昨天,万维网联盟(W3C)宣布,经过将近8年的艰辛努力,HTML5标准规范终于最终制定完成并已公开发布. 狭义上,HTML5是HTML的第五个版本.HTML的全称是超文本标记语言(HyperText Markup Language),由万维网的发明者蒂姆·伯纳斯·李设计,是为创建网页而设计的一种标记语言.HTML利用标签来描述内容的语义,使计算机能够通过识别标签来正确处理内容. 广义上,HTML5是HTML5.CSS3.Javascript2.0的统称,因为对于现在的互联网开发而言,这三者是密不

历时八年 HTML5标准终于制定完成

HTML5是如今最先进的WEB开发技术,虽然已经沿用了多年,但是HTML5的技术标准,其实上并未明确制定完成.日前,互联网权威技术组织万维网联盟(W3C)正式宣布,历时八年的HTML5标准制定全面完成,正式开始面向行业作出采用推荐.W3C是全球有关互联网WEB技术的权威技术标准组织,推动了互联网尤其是HTML技术的一代代演进.该组织表示,在过去多年时间里,他们联合了全球60多家公司,共同完善HTML5标准,其中解决了4000多个BUG.众所周知的是,HTML5代表了新一代的网页应用开发技术,可以

unity3D新闻:HTML5标准最终确定 体验或将有所改变

狗刨学习网报道:万维网联盟(World Wide Web Consortium,简称W3C)近日发布了HTML5标准的推荐版,并将其命名为用于创建网页与应用程序的HTML5标准的终极版. HTML5的发展演化是一个极其复杂又缓慢的过程,上一代HTML标准(4.0)进入到这一阶段还是在1997年的时候.问题的核心部分一直同互联网发展与改变的方式,以及人们与之展开互动的新方式--比如说,通过智能手机与应用程序进行互动--保持着紧密的关联. "如今,我们想的不再是如何自然地在浏览器上观看视频收听音频,

从html5标准的正式发布到国内CMS的变革

10月底万维网联盟(W3C)宣布,经过将近8年的艰辛努力,HTML5标准规范终于最终制定完成并正式发布. W3C的正式批准让人们对HTML5更有信心.“这是一个里程碑,标志着很多人员在长达七年时间内投入到标准开发工作中所得到的结果,”W3C参与HTML5开发工作的Michael Smith表示,“对于很多人来说,使用获标准组织批准的稳定版本的标准很重要.” 公认的Web创始人Tim Berners-Lee认为发展到可编程Web页面是近几年的重点发展.现在,HTML和JavaScript可以运行在

HTML5标准终于来了,看什么书学习最好??????

最近看了一本书<HTML5网页开发实例详解>,是大众点评的攻城狮写的,觉得很有收获,看样子目前大多数的国内网页都支持HTML5了,全栈工程师是不是必须得会HTML5? 有兴趣的可以讨论呀,发这本书的一个介绍给大家看看: 本书帮你从HTML 4时代过渡到HTML 5时代: 本书提供现实生活中的应用,包括移动应用和普通PC应用: 本书会涉及HTML 5的游戏库.图表库.框架介绍和案例: 本书从现实的表单使用场景出发,解决低版本浏览器的兼容问题: 本书介绍各种W3C规范来自什么标准,用向何处: 本书

HTML5 标准规范完成了

?    ?万维网联盟(W3C)昨天宣布,HTML5 标准规范终于最终制定完成了,并已公开发布.对于前端工程师来说,这无疑是一个振奋人心的好消息. ?    ?众所周知,HTML5改变了互联网,将成为下一代web标准,HTML5 拥有许多新的特性,用于绘画的 canvas 元素,用于媒介回放的 video 和 audio 元素,对本地离线存储的更好的支持,新的特殊内容元素,新的表单控件. ?    ?在这之前Internet Explorer 9.Safari.Chrome.Firefox 以及

[译] Python 2.7.6 标准库——15.1 os模块

该模块提供了一种使用依赖于操作系统函数的可移植方法.如果想读或写一个文件,参考open():如果想操作路径,参考os.path模块:如果想读取命令行中所有文件的所有行,参考fileinput模块.如果要创建临时文件和目录,参考tempfile模块.高级文件和目录处理则参考shutil模块. 注意函数的可用性: Python所有内置的依赖于操作系统的模块设计原则是:如果有相同的函数功能可用,则使用同一接口.例如,函数os.stat(path)以同一格式返回路径的stat信息(源于POSIX接口).

HTML 参考手册- (HTML5 标准)

HTML 参考手册- (HTML5 标准) 功能排序 New : HTML5 新标签 标签 描述 基础   <!DOCTYPE>  定义文档类型. <html> 定义一个 HTML 文档 <title> 为文档定义一个标题 <body> 定义文档的主体 <h1> to <h6> 定义 HTML 标题 <p> 定义一个段落 <br> 定义简单的折行. <hr> 定义水平线. <!--...--&