[譯] 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的不一樣

相關文章
相關標籤/搜索