Yuhůův weblog o webu

v úterý 20. září 2005

Opravuje se zpracování doctype v IE7

Chris Wilson na IE Blogu informuje, že při vývoji prohlížeče Internet Explorer 7 se bude při rozpoznávání zobrazovacího módu podle doctype správně přeskakovat xml prolog (odkazovaný článek je anglicky).

Trocha teorie pro nezasvěcené (profíci přeskočí): Moderní prohlížeče dovolují vykreslovat HTML dokumenty v několika vykreslovacích režimech, které pro zjednodušení dělím do dvou větví: 1) standardní režim a 2) quirk režim, jemuž se také říká režim zpětné kompatibility. Tyto dva režimy se liší zejména tím, jak zpracovávají tzv. box model, jinak řečeno jak pracují se šířkou, výškou, výplní (paddingem) a s rámečky. Typický obrázek amatérských stránek je ten, že v Exploreru vypadají dobře, ale jsou úplně rozpadlé v Mozille. Za to mohou právě různé režimy. V praxi se to řeší většinou tak, že se na začátek HTML kódu dá standardní doctype (takové to magické <!--doctype ... určitého typu), což způsobí, že se stránka přepne z quirku do standardního zobrazení, takže se v Exploreru 6 a v Opeře začne chovat hodně podobně jako v Mozille (Firefoxu). To je ideální stav. Internet Explorer 6 má ale nepříjemnou chybu, že doctype nenajde, když není na prvním řádku souboru. Potom stránku vykresluje, jako by doctype neměla, takže chybně v quirk módu. A to je to, co vývojáři IE7 chtějí opravit.

Pokud je stránka psaná v jazyce XHTML a je kódovaná jinak než v UTF-8, měla by správně na prvním řádku souboru mít tak zvaný XML prolog s uvedením kódování a teprve potom doctype. Když ale takovou stránku dostane IE 6, doctype nenajde, protože hledá pouze na prvním řádku. Internet Exlorer 7 bude umět první řádek s XML prologem při hledání doctype přeskakovat a doctype najde správně. To je dobrá zpráva pro příznivce XHTML (mezi něž se sice nepočítám, ale to nevadí).

application/xml+xhtml nebude

S problematikou XHTML souvisí další věc, kterou Chris Wilson v již odkazovném článku zmiňuje. Ve specifikaci XHTML se uvádí , že by se dokumenty psané v XHTML měly odesílat s mime type application/xml+xhtml. Problém má opět Internet Explorer -- když takovou stránku dostane, pokouší se ji spustit jako program, což vyvolává podivnou bezpečnostní hlášku, která je pro pohodlné prohlížení stránek jednoduše nepřípustná (a otevření se stejně nemusí podařit). Ani jiné povolené mime types nejsou pro Explorer vhodné (application/xml se také chce spouštět a text/xml se namísto HTML parseru snaží používat XML parser, takže se stránka vykreslí jako kód).

Tohle chování ale v IE7 opravovat nebudou. Důvodem je to, že Chris Wilson má XHTML rád:

Proč nebudeme v IE7 podporovat XHTML, když bude poskytnuto s media typem "application/xml+xhtml"? Učinil jsem rozhodnutí, že toto MIME type v IE7 nebudeme podporovat prostě proto, že já osobně chci, aby XHTML bylo úspěšné v dlouhodobém horizontu. Miluju XHTML ... (Chris Wilson, IE Blog, volný překlad)

Osobně toto rozhodnutí spíše kvituji. IE7 bude stát na základech starého exploreřího HTML parseru. Těžko vytvořit něco, co se bude chovat jako XML parser, na starém parseru, jehož základním cílem je zpětná kompatibilita.

Starší související články: Jiří Kosek: Proč nepoužívám XHTML, Petr Staníček: Doctype a režimy prohlížečů. Na stejné téma byli včera rychlejší Petr Weida a Honza Brašna.

trvalý odkaz

Yuhůův weblog píše Yuhů Yuhů. Kontakt. Weblog patří pod Jak psát web.