Yuhůův weblog o webu

v pondělí 21. března 2005

Skutečná podpora flashe

Výsledky měření podpory flashe v prohlížečích, jak je přineslo Navrcholu v loňské červnové a v letošní březnové tiskovce, jsou absolutně špatně. Může za to měřící kód Navrcholu, který obsahuje dvě hrubé chyby. Abych jenom nerejpal, přináším výsledky svého měření.

Původně jsem tento článek chtěl pojmenovat "Davové bezvědomí". Skutečnost, že za deset měsíců nikdo nezpochybnil zcela chybná data o podpoře flashe z dílny Navrcholu, mě přivádí do rozpaků. Trochu to vyčítám i sobě, ale osobně se o flash skoro vůbec nezajímám, tak jsem to moc nestudoval. Omlouvám se, moji milí čtenáři, za dnešní trochu delší text. Potřebuji všechno důkladně vysvětlit.

Co o podpoře flashe ve své tiskovce Navrcholu říká:

Verze Flash pluginu podle Navrcholu, únor 2005
VelikostPodíl
Verze 713,43%
Verze 676,30%
Verze 5 0,08%
Verze 4 0,05%
Verze 3 0,01%
Bez podpory 7,09%
Nezjištěno3,04%

Jak je to opravdu

Minulý týden jsem si podporu flashe změřil na hlavní stránce webu www.jakpsatweb.cz. Zde jsou moje výsledky:

Verze Flash pluginu na jakpsatweb.cz, březen 2005
verze flashe prohlížeč MSIE jiné prohlížeče všechny prohlížečepenetrace verze
Verze 783,0%93,1%86,5%86,5%
Verze 611,9%6,6% 10,1%96,6%
Verze 52,7% 0,2% 1,8%98,4%
Verze 40,1% 0,1% 0,1%98,5%
Verze 3 0,1% 0,0% 0,1%98,5%
Bez podpory 2,2% 0,0% 1,5% -

Celkem jsem vzal v úvahu 13.511 návštěv své stránky z minulého týdne (brány návštěvy podporující javascript a obrázky, 66% jich bylo z prohlížeče Internet Explorer (MSIE)). Tam, kde uvádím 0,0%, samozřejmě netvrdím, že to je absolutní nula, pouze je to číslo menší než půl promile (a přesnosti na dvě desetinná místa nedosahuji). Přesný měřící kód můžete vidět v kódu hlavní stránky www.jakpsatweb.cz, ještě pár dnů jej tam nechám. S přípravou měřícího kódu a ověřováním výsledků mi velmi pomohl Martin Džubák, moc děkuju.

13,5% prohlížečů nemá flash 7, bacha na to. Ostatní verze jsou v pohodě.

Protože na můj web chodí trochu méně procent uživatelů s Internet Explorerem, než je obvyklé, dá se předpokládat, že na normálnějším webu bude podpora 7. verze flashe mírně nižší než 86,5%, kolikžto jsem naměřil u sebe. Výsledky jsou pro autory flashových animací celkem optimistické, čímž samozřejmě nechci říci, že by se weby měly dělat pouze ve flashi.

Jak se moje měření liší od výsledků z Navrcholu, je nejlépe vidět z grafu:

na dvou koláčových grafech je vidět zejména to, že se rozcházíme v tom, která verze flashe je dominantní

Vidíte, že podle Navrcholu současnému webu absolutně dominuje flash verze 6. Skutečnost je ovšem taková, že zdaleka nejrozšířenější je sedmička. Ještě připomenu, že pokud prohlížeč podporuje třeba šestku, předpokládá se, že automaticky podporuje i všechny nižší verze, což se výše promítá ve sloupku penetrace verze.

Dvě chyby v měřícím kódu Navrcholu

Naměřit podporu flashe není úplně triviální. V Internet Exploreru je potřeba VBScriptem zkusit vytvořit ActiveX komponentu a koukat, jestli se to stane. Šlo by to testovat i Javascriptem, ale to nefunguje v Internet Exploreru 5.0. Další fígl je v tom, že VBScript se musí vypsat Javascriptem, protože jinak by se ty jazyky v Exploreru mohly poprat a chybovat.

V ostatních prohlížečích se podpora flashe zjišťuje parsováním hodnot javascriptového pole window.navigator.plugins. To je celkem bez problémů. Problém je v tom kódu pro Explorer. Ještě 12. března vypadal úryvek z měřícího kódu na Navrcholu určený pro windowsácké Explorery takto (p = document):

p.writeln("<s"+"cript language=\"VBScript\">\non error resume next");
for (i=3; i<7; i++)
p.writeln("if(IsNull(CreateObject(\"ShockwaveFlash.ShockwaveFlash."+i+"\"))) then n3f8q=0 else n3f8q="+i+" end if");
p.writeln("</s"+"cript>");

Pokud si to přečtete pozorně, pochopíte, že se do dokumentu skriptem vypisuje další VBScript, který se snaží vytvořit několik pokusných objektů. (Na zápisu skriptu skriptem není nic špatného, jedná se o klasický postup používaný zejména v reklamě.)

Při prvním pohledu na javascriptový cyklus for uvidíte první chybu. Měli tam i<7, takže pro Explorer vůbec netestovali existence Flashe verze 7. Správně má být i<=7. To je důvod, proč naměřili tak málo flashových verzí sedmiček. Během toho týdne, co jsem prováděl měření, si této chyby (po roce) všimli a opravili na i<8. Zajímavé na tom je, že tu druhou chybu tam nechali.

Neviditelně vypsaný VBScript skript se snaží naplnit do proměnné n3f8q číslo s verzí flashe. Vypadá asi takto:

<script language="VBScript"> on error resume next 
if(IsNull(CreateObject("ShockwaveFlash.ShockwaveFlash.3"))) then n3f8q=0 else n3f8q=3 end if 
if(IsNull(CreateObject("ShockwaveFlash.ShockwaveFlash.4"))) then n3f8q=0 else n3f8q=4 end if 
if(IsNull(CreateObject("ShockwaveFlash.ShockwaveFlash.5"))) then n3f8q=0 else n3f8q=5 end if 
if(IsNull(CreateObject("ShockwaveFlash.ShockwaveFlash.6"))) then n3f8q=0 else n3f8q=6 end if 
</script>

Zde je vidět ta druhá chyba. Podívejte se pozorně na poslední řádek (zvýrazněno). Já VBScriptu rozumím jako koza petrželi, ale to ještě vím, že z tohoto řádku můžou vypadnout pro proměnnou n3f8q pouze dva stavy. Buďto šestka, nebo nula. Nic jiného, bez ohledu na to, jak dopadly předchozí řádky.

Navrcholu tedy v únoru naměřilo od všech uživatelů Exploreru dosti nesmyslně buďto šestku, nebo nulu. Statistika se doplnila čísly z ostatních prohlížečů (to je těch 13% sedmičky) a hurá s tím do světa!

Něco o tom napiš

Jediný, kdo během toho roku, co jsou ta čísla na světě, trochu měření zpochybnil, byl Martin Kopta v článku Podpora pro Flash, JavaScript a cookies:

Při čtení tiskové zprávy Navrcholu.cz o využívání možností prohlížečů mě zarazila tabulka podpory pro plugin Macromedia Flash. Ve článku, který jsem na to téma psal před rokem, jsem totiž vycházel z měření, při kterém bylo zjištěno mnohem méně uživatelů bez podpory jakéhokoli pluginu pro Flash... (Martin Kopta, Lupa.cz)

Což mimochodem může dobře odpovídat té druhé zmíněné chybě. Ale Martina tenkrát nenapadlo měřící kód zkontrolovat. Hůře dopadl Václav Štrupl, který v nedávném článku na Lupě pouze měření suše komentoval bez náznaků zpochybnění.

Zajímavou zmínku jsem teď našel u Radka Hulána. Měřící kódy si pro sebe přepsal tak, že fungují správně, ale možná si přitom původních chyb nevšimnul.

Opravíme v tichosti

Pokud se podíváte na současný měřící kód Navrcholu (třeba tady, soubor .js), uvidíte, že první chyba je již opravena. Už je tam i<8. To sice na první pohled vyvolává sympatie, na druhou stranu ovšem ten, kdo na tuto chybu přišel, měl kromě opravy vydat ve stylu Navrcholu taky tiskovku s nadpisem: "Omlouváme se, spletli jsme se." Protože to mu v tu chvíli muselo dojít, že se spletli a že ta publikovaná čísla jsou mimo. Ale nic takového nevydali, jenom chybu tiše opravili. Důvěryhodnost tiskovek z Navrcholu, již z dřívějška silně otřesená, pro mě tím pádem klesla pod nulu a bude trvat dlouho, než se v mých očích nad bod mrazu dostane zpět. Odpovědně tvrdím, že tiskovky z Navrcholu jsou pro český web škodlivé. Nemyslím to zle, ale nemohu jinak. Týmu Navrcholu bych doporučil ještě rychle opravit i tu druhou chybu a z dubnových čísel pak spočítat něco normálnějšího a z většího vzorku, než mám já.

Související: O tom, jak se Navrcholu spletlo i v javascriptu (tento blog).
Penetrace verzí flashe podle Macromedia (macromedia.com, anglicky) docela dobře odpovídá mým naměřeným datům.

Reaguje Pixy: Věříte statistikám navrcholu? a reaguje také Chose: Statistika podpory Flashe dle Navrcholu.cz vs Yuhů. IL říká: Chybu může udělat kdokoliv.

trvalý odkaz

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