Proč HTML5 potřebujeme jak prase drbání?

24. 4. 2008 15:36 (aktualizováno) Martin Hassman

Karl Dubost napsal na W3C blog příspěvek Why HTML 5 Specification Matters?

This is a simple story. The story of an HTML bug. Like every stories, it could start with… Once upon a time, there was a bug.

Karl píše o problému s webem www.bmw.com v prohlížeči Safari. Skutečně, když se na web ze Safari podíváte, moc z něj neuvidíte. Významné weby nemohou prohlížeče jen tak ignorovat, a proto byl problém byl do bugzilly WebKitu nahlášen. Z Firefoxu a Internet Exploreru vypadá web v pořádku, problém se objeví ještě v Opeře.

Celý nefunkční web je způsoben tímto kusem kódu:

     <div style="display:none">
       <table>
         <div>
           <table>
           </table>
         </div>
     </div>

Ach ty tabulko jedna neuzavřená, kdepak nám v tom kódu vlastně končíš?

Málo specifikované HTML

Protože HTML specifikace přesně neříká, jak se má prohlížeč zachovat v případě neukončené tabulky, chovají se prohlížeče různě. Každý umístí konec tabulky trochu jinde, což v některých případech znefunkční třeba celý web BMW.

Navíc žádná z variant nelze označit za lepší než ostatní, může to být ta, kterou používá Safari a stejně tak ta u Firefoxu.

Tvorbu DOM stromu můžete prozkoumat v nástroji Live DOM Viewer – ukázka. Pokud si zobrazíte ukázku v několika prohlížečích, můžete porovnat odlišně vytvořenou domovou strukturu.

HTML5 specifikuje dosud nespecifikované

S řešením přichází až připravovaná specifikace HTML5, kterou tvoří W3C ve spolupráci s WHATWG (rozepsanou specifikaci najdete na adrese www.w3.org/html/wg/html5). O ní Karl píše:

HTML 5.0 Editor's draft defines a very precise mechanism for recovering invalid markup. As we can see in the comment about the bug, Dave Hyatt says: „Easy, the html5 spec covers this.“

HTML 5 Specification matters because it creates more interoperability when recovering from errors.

V Safari byl tedy problém vyřešen, upravilo své chování podle HTML5 (oprava je v tuto chvíli dostupná jen v nočních buildech WebKitu).

HTML5 specifikuje chování HTML prohlížečů i v krajních případech, jako jsou nevalidní dokumenty a tag soup. Jakmile prohlížeče HTML5 implementují (a někteří s tím pomalu začali již dnes), podobných problémů by mělo ubývat.

Tahle myšlenka (HTML as she are spoke) napadla nezávisle dva lidi Iana Hicksona z WHATWG a Dan Connollyho z W3C. Není divu, že oba dva mají s HTML5 hodně společného.

Jak by se výše zmíněný dokument parsoval v HTML5 parseru se můžete podívat na experimentální verzi html5lib. Vidíte v něm vytvořený stromeček (nejvíce se asi podobá tomu, co vytváří Firefox) včetně chyb hlášených parserem (dole na stránce).

Možné problémy

Zajímavé jsou i komentáře pod Karlovým příspevkem. Asi nejvážnější je připomínka: Invalid HTML markup is still online and not fixed.

Tady je pak otázkou, co je důležitější. Za tu dobu strávenou na Technické evangelizaci jsem pochopil, že se jedná o činnost, která nikdy neskončí, a proto čerstvý vítr HTML5, který by mohl řadu z těchto problémů vyřešit, vítám. Aneb dost již bylo nekonečných problémů se zobrazováním stránek v prohlížečích. HTML5 přijde za 3 roky, doufejme, že řadu ze stávajících problémů vyřeší.

Pomůže HTML5 vyřešit problémy mezi prohlížeči?

Sdílet