Opera versus display:none versus obrázky
Posted on: Čtvrtek, Čer 5, 2008
Opera 9.27 mi dnes dala trochu zabrat. Pro PCTuning.cz připravuji rotátor článků napsaný v JavaScriptu (se značnou pomocí jQuery) a když už se zdálo, že je vše hotové, dostal jsem nenápadnou připomínku – Opera při každé změně článku něco načítala. Říkal jsem si ale, že je to logické a že Opera dělá něco, co hloupý IE nebo FF prostě neumí. Je velmi logické, že když má nějaký prvek pomocí CSS nastavenou vlastnost display: none, není třeba načítat obrázky v něm obsažené – proč taky, když nejsou vidět. Na druhou stranu bych očekával, že se tak stane pouze při jejich prvním zobrazení, pak že data zůstanou v prohlížeči.
Ale zde už logika nefungovala. Opera zobrazila příslušný DIV, načetla obrázek, vyčkala na timeout, opakovala akce pro další články, a když na první došlo znova, načítala obrázky opět. Bylo tedy třeba vymyslet nějaký permanentní preload obrázků pro Operu. Do cyklu přes články jsem tedy umístil následující kód a bylo vymalováno.
//pokud identifikujeme Operu
if (window.opera)
{
//pro dany div se clankem projdeme vsechny obrazky
for(j = 0; j < $("img",$("div[class=pct_clanek_rotator]").eq(i)).length; j++)
{
//do pole si vytvorime nove instance objektu Image
images["i"+"j"] = new Image();
//nacteme obrazek z prislusne URL
images["i"+"j"].src = $("img",$("div[class=pct_clanek_rotator]").eq(i)).eq(j).attr("src");
}
}
Pomalu je asi na čase opičit se po Goophym a vybavit se CodeBox pluginem – Vojto, můžu? :-)
- Tags: CSS, display:none, JavaScript, jQuery, obrázky, Opera
- No Comments
Latest Comments