Přejít k navigační liště

Zdroják » Zprávičky » Jak zprovoznit Modernizr 1.5 v IE9 Platform Preview

Jak zprovoznit Modernizr 1.5 v IE9 Platform Preview

Zprávičky Různé

This text is also available in English

Pokud používáte knihovnu Modernizr verze 1.5, pravděpodobně jste zjistili, že nefunguje korektně pod MSIE9 Platform Preview (projevilo se to i na našem Detektoru podpory HTML5). Příčinou je nedostatečné ošetření detekčního kódu v knihovně a nestandardní chování IE9PP.

Knihovna Modernizr testuje některé vlastnosti pomocí testu, který vypadá zhruba takto:

if (m_style[property] !== undefined) ...

m_style je zkratka pro styl testovacího elementu:

m = doc.createElement( mod ),
m_style = m.style

Pro CSS3 transformace se testují tyto vlastnosti: ‚transformPro­perty‘, ‚WebkitTransform‘, ‚MozTransform‘, ‚OTransform‘ a ‚msTransform‘. Problém je, že v IE9PP je m_style pro první čtyři vlastnosti správně undefined, ale poslední vlastnost, msTransform, nevrátí undefined, ale místo toho vyhodí výjimku „Not Implemented“. Ve funkci test_props() v knihovně Modernizr verze 1.5 není toto chování korektně ošetřeno, skript tedy skončí s chybou a knihovna nefunguje tak jak má („Modernizr není definován“).

Pravděpodobný důvod takového chování je ten, že IE9 počítá s podporou msTransform (tedy není důvod vrátit „undefined“), ale v Platform Preview verzi nejsou transformace zatím funkční, proto pokus o přístup k nim vyhodí výjimku. Jde o nestandardní chování a lze předpokládat, že v další verzi IE9 (např. v očekávané betě) bude toto fungovat už korektně. Paul Irish, spoluautor Modernizru, toto chování reportoval jako bug.

Ošetření spočívá v uzavření testovací podmínky do bloku try{}, který nestandardně vyhozenou výjimku zachytí, a knihovna tak nezhavaruje celá. Takto vypadá ošetřená funkce:

function test_props( props, callback ) {
    for ( var i in props ) {
        try {
          if ( m_style[ props[i] ] !== undefined && ( !callback || callback( props[i], m ) ))
             {return true;}
        } catch (e) { ; }
    }
}

Na problémy IE9PP s Detektorem, jejichž příčinou je právě výše zmíněný bug, upozornil Štěpán Bechynský.

Komentáře

Odebírat
Upozornit na
guest
0 Komentářů
Nejstarší
Nejnovější Most Voted
Inline Feedbacks
Zobrazit všechny komentáře

Přístupnost není jen o splnění norem: nový pohled na inkluzivní design

Přístupnost a inkluze možná nepatří mezi nejžhavější témata digitálního světa – dokud o nich nezačne mluvit Vitaly Friedman. Na WebExpo 2024 předvedl, že inkluzivní design není jen o splněných checkboxech, ale hlavně o lidech. S energií sobě vlastní obrátil zažité přístupy naruby a ukázal, že skutečně přístupný web je nejen možný, ale i nezbytný.

Efektivnější vývoj UI nebo API: Co si odnést z WebExpo 2025?

Různé
Komentáře: 0
Jak snadno implementovat moderní uživatelské rozhraní? Které funkce brzdí rychlost vašeho webu? A kdy raději sami přibrzdit, abychom využitím AI nepřekročili etické principy? Debatu aktuálních dev témat rozdmýchá sedmnáctý ročník technologické konference WebExpo, která proběhne v Praze od 28. do 30. května. Který talk či workshop si rozhodně nenechat ujít? Toto je náš redakční výběr z vývojářských hroznů.

Zapřáhněte AI jako nikdy předtím. Květnová konference WebExpo přivítá hvězdy technologického světa

Od 28. do 30. května 2025 promění pražský Palác Lucerna na tři dny technologická konference WebExpo. Na programu je více než 80 přednášek a workshopů od expertů z celého světa. WebExpo tradičně propojuje vývojáře, designéry, marketéry i byznysové lídry a nabízí praktické dovednosti, strategické myšlení a přináší nejnovější trendy nejen v oblasti AI.