středa 30. dubna 2008

Font nebude validní

Včera došlo k drobnému posunu týkajícímu se značky font v HTML5. Okolnosti, proč byla zahrnuta do specifikace jsem probíral v Odlišná pravidla pro HTML z WYSIWYG editorů?

Ian Hickson včera oznámil, že značka font bude potlačena ve prospěch atributu style.

Z toho vyplývá:
  • atribut style, který byl (podle mě nelogicky) v prvním draftu HTML5 zcela vyřazen, se do HTML opět vrací.
  • použití značky font je nevalidní za všech okolností (v prvním draftu bylo validní pokud byl dokument vytvořen WYSIWYG editorem)
  • specifikace HTML5 bude i nadále pokrývat zpracování značky font v prohlížečích (aby prohlížeče dokázaly zpracovat stávající obsah webu)
Zdroj: Karl Dubost - font is dead, vive le style

Ikony stránek s rozměry

Řada webových stránek dnes obsahuje svou ikonu (tzv. favicon). Dnes se ovšem z obyčejné webové stránky snadno může stát skoro-desktopová aplikace (jakmile prohlížeče implementují HTML5, můžete ono "skoro-" vynechat) a u těch jsou požadavky na ikony přeci jen poněkud větší.

Ian Hickson včera zahájil diskusi na téma ikon svým jednoduchým návrhem: <link rel=icon width="" height="">.

Diskuse se rozrostla. Někteří účastníci mají například pocit, že by měl být zohledněn i používaný OS (přeci jen každý má trochu jiné zvyklosti) a tak navrhují následující použití:

<link type="icon" type="application/svg" sizes="any" href="whatwg.svg">

<link type="icon" type="image/microsoft.vnd.icon" sizes="16x16 32x32" href="whatwg.ico">

<link type="icon" type="image/x-apple-icons" sizes="16x16 32x32 64x64 128x128 256x256 512x512" href="whatwg.icns">

<link type="icon" type="image/png" sizes="59x60" href="whatwg.png">

Diskuse stále probíhá ve vláknu začínajícím emailem Iana Hicksona, zapojit se můžete i vy.

Desktopové ikony se hodí nejen u pokusů typu Mozilla Prism, ale například i u asociace protokolů s webovými aplikacemi, což je součást HTML5, která byla implementována ve Firefoxu 3.

pondělí 21. dubna 2008

Web Forms 2 do WebKitu v rámci Google SOC

Specifikaci Web Forms 2.0, která - byť zatím separátním dokumentem - je součástí HTML5, implementovala pouze Opera. Pro ostatní prohlížeče existují různé emulace, např. projekt webforms2 na Google Code, ale ty mají do produkční kvality daleko.

Proto mě potěšilo, že v rámci akce Google Summer of Code, které se účastní i WebKit, se objevil projekt implementace Web Forms 2 do WebKitu. Podle popisu projektu nebude student Michelangelo De Simon, který se k úkolu přihlásil, implementovat celou specifikaci, ale odhadem tak 40 %.

Jsem zvědav, zda se Michelangelovi jeho projekt povede (úspěšnost projektů v Google SOC není příliš velká). Navíc ostatní implementátoři v tuto chvíli vyčkávají, než Forms Task Force rozhodne, zda budou Web Forms 2 do HTML5 zahrnuty tak jak jsou nebo zda se před tím dočkají nějakých změn.

HTML5 a spouštění skriptů

Specifikace HTML5 se zaměřuje i na spouštění skriptů ve stránce. Zmíním dvě zajímavosti týkající se spouštění skriptů.

Atributy defer a async

V HTML4 byl u značky script definován atribut defer, který umožňuje prohlížeči pokračovat ve zpracovávání dokumentu, aniž by musel čekat na proběhnutí daného skriptu (skript ovšem nesmí měnit stránku během načítání, výsledek by pak byl nepredikovatelný). Specifikace bohužel již nijak neříká, kdy přesně má být skript spuštěn.

Atribut defer zatím implementuje pouze Internet Explorer, ale tato implementace je považován za "nekonzistentní" (nekonzistentní uvádím v uvozovkách, jelikož specifikace chování nepopisuje, nelze žádné chování označit za správné či nikoliv).

Pro vyřešení situace HTML5 u značky script zavádí dva atributy defer a async. Oba slouží podobnému účelu, ovšem zatímco:
  • skript označený jako async bude spuštěn, jakmile je dostupný (Zpracování stránky se u značky skript nezastaví, pokračuje dále a skript je spuštěn, jakmile se načte, tedy v nepredikovatelnou dobu.)
  • skript označený jako defer bude spuštěn až v momentě, kdy se dokončí zpracování (parsování) celé stránky (Tedy v predikovatelnou a vždy stejnou dobu. Specifikace hovoří o dokončení parsování stránky, prohlížeč tedy v tu dobu může stále ještě načítat další zdroje, např. obrázky.)
Autoři webových aplikací by mohli správným použitím těchto atributů načítání stránek urychlit. Za zmínku stojí, že vývojáři WebKitu jsou trochu jiného názoru. Místo, aby vývojáři do svých stránek museli vkládat jeden atribut async za druhým, snaží se problém řešit i na straně prohlížeče.

Událost dokončení načítání stránky

Druhá zajímavost se týká událostí načtení stránky. Klasická událost load totiž vždy nestačí, ta je totiž vyvolána až v momentě kompletního načtení celé stránky. Pokud webová stránka obsahuje veliké obrázky, čeká událost load na jejich načtení.

To je často v rozporu s požadavky uživatelů i vývojářů (když se vám načítá stránka s galerií, je žádoucí, aby její vrchní část fungovala nezávisle na spodní části, do které se stále ještě načítají další fotografie).

Jednoduché řešení fungující ve všech prohlížečích neexistuje, a proto byla vymyšlena celá řada triků, jak toho docílit.

HTML5 specifikuje událost DOMContentLoaded, která je vyvolána právě v kýženém momentu - tedy hned po zpracování celé stránky. V tuto chvíli ji podporuje trojka prohlížečů S.O.F. (Safari, Opera, Firefox), v IE lze emulovat některým z odkázaných triků.

čtvrtek 17. dubna 2008

SVG do HTML5 - znovu a jinak

Pokus o začlenění SVG do HTML5, který připravovala WHATWG spolu s pracovní skupinou pro HTML, byl zrušen na žádost pracovní skupiny pro SVG. Hlavním argumentem byla nekompatibilita syntaxe takto vkládaného SVG se stávajícími implementacemi SVG.

Pracovní skupině pro SVG se ovšem celý nápad se začleněním líbí a pokusí se přijít s vlastním řešením, při kterém by kompatibilita zůstala zachována v maximální možné míře.

Práce na začlenění MathML a datových atributů i nadále pokračují. Více se o průběhu celé problematiky dočtete v mailinglistu HTML WG (sledujte vlákna, která mají v předmětu SVG nebo MathML).

Další odkazy

úterý 15. dubna 2008

Uvozovky uvnitř značky q

Značka <q>, používaná pro označování citací, v HTML5 již nebude sama o sobě zajišťovat vykreslení uvozovek okolo citovaného textu. Pokud autor uvozovky okolo citovaného textu vyžaduje, v HTML5 je musí okolo textu uvnitř značky <q> vložit ručně. Oznámil to nedávno Ian Hickson v diskusní skupině WHATWG.

Chování značky q v HTML5 se tak bude odlišovat od HTML4 specifikace, která vykreslení uvozovek prohlížečem požadovala. V praxi se na toho chování ovšem nedalo spolehnout, protože je Internet Explorer nepodporoval.

Ian Hickson dále navrhuje vytvoření pseudo-značek ::quote-start a ::quote-end, které by umožnily definovat uvozovky podle jazykových zvyklostí, a zaslal tento návrh pracovní skupině pro CSS.

Návrh jsem nenalezl a není mi zatím úplně jasné, jak je s novým zpracováním značky <q> v souladu. Uvidíme, zda se nějaké detaily neobjeví na blogu CSS WG, poslední dobou je tam docela živo.

sobota 12. dubna 2008

Firefox 3 umí uložit obsah canvasu

Canvas je novou HTML značkou, která umožňuje vývojářům kreslení přímo do webové stránky. Nedávno jsem si všiml, že se v uživatelském rozhraní Firefoxu 3 objevila možnost uložit canvas jako obrázek.

Canvas sám o sobě podporuje vygenerování fyzického obrázku. Vývojářům stačí zavolat jeho metodu .toDataURL(), která vygeneruje obrázek z aktuálního obsahu canvasu. Vývojáři tak mohou nabídnout uživateli vygenerovaný obrázek ke stažení nebo naopak uložit vykreslený obsah canvasu na server. Vyzkoušet si to můžete na jednoduchém příkladu (obrázek vygenerujete přímo kliknutím na canvas).

Firefox 3 jde ale ještě o krok dál a nabízí stejnou možnost přímo v uživatelském rozhraní. Z pohledu uživatele se tak zastírá rozdíl, co je skutečný obrázek, a co je obrázek vykreslený canvasem. Oba se navenek chovají stejně a uživatel mezi nimi ani nemusí poznat rozdíl.



Vyzkoušet si to můžete například na stránce Canvex (pěkný pokus o implementaci Dooma připomínajícího herního enginu v prohlížeči). Kdykoliv zobrazíte na hrací ploše kontextové menu, můžete si ve formátu PNG uložit obrázek aktuálního dění ve hře.

Jsem zvědav, zda se tím budou inspirovat i ostatní prohlížeče.