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ší Nejvíce hlasů

DressCode si vezme váš PHP kód do parády

‐ PHP ‐
Komentáře: 0
Napsat nové pravidlo do PHP CS Fixeru nebo PHP_CodeSnifferu je za trest. David Grudl to zkusil kvůli jedinému řádku `use function` a místo pravidla z toho vznikl nový nástroj DressCode, postavený nad stromem, který ze zdrojáku nic nezahodí. Ukážeme si, jak ho nasadit, nastavit a zapojit do práce AI agenta.

Proč Anthropic ve svém monorepozitáři opustil Git? AI agenti změnili pravidla hry

‐ Různé ‐
Komentáře: 0
Anthropic nahradil Git ve svém hlavním monorepozitáři vlastním systémem Scion. Důvodem je prudký nárůst změn vytvářených s pomocí AI agentů: zatímco v květnu 2026 firma začleňovala přibližně 2 500 změn denně, v září jich bylo přes 30 000. Nový systém přesouvá správu historie na server, omezuje stahování nepotřebných dat a zrychluje přípravu kódu pro testování. Nejde však o univerzální náhradu Gitu.