Autor Zpráva
Camo
Profil
Dobrý večer všetkým,
ako je v nadpise napísané, mizne mi jedne obrázok v IE. Cez JS načítavam gif animácie priradením adresy do src. Ešte pred tým urobím preload, proste nič ohromné... Je to dosť čudné, lebo mizne iba jeden nie všetky. Vidieť to môžete na adrese http://camo.tym.sk/atelier/animacieTest.php (odkaz opravený)
Celý JS je toto:
<script type="text/javascript">

var oldWhich='';

function onloadIMG(){
        document.getElementById('obrazok').src=graf.src;
        document.getElementById("obrazok").style.visibility="visible";

}


var graf=new Image();
        if(graf.addEventListener){         //cirkus je tu kôli FF pretože zasekával animácie a bolo ich treba preloadnúť
                        graf.addEventListener("load", onloadIMG , false);
        }
        else if(graf.attachEvent){
                    graf.attachEvent('onload', onloadIMG);
        }
        else {graf['onload'] = onloadIMG; }

function preloadIMG(url, which) {
        if("http://camo.tym.sk/atelier/animacieIMGs/" + url==graf.src) return;  //koli IE lebo opakovany klik na to iste NEvyvola onload a ostane len hidden...
          graf.src="http://camo.tym.sk/atelier/animacieIMGs/" + url;
          document.getElementById('obrazok').style.visibility='hidden';
        which.style.color='green';
          if(oldWhich != '') oldWhich.style.color='#cc3366';
          oldWhich=which;
}

</script>
Ak mi to vie niekto vysvetliť, tak mu budem vďačný.
peta
Profil
Tvuj navod, co mame udelat, aby se problem objevil je nesrozumitelny. Dobrych 10 minut mi trvalo, nez mi doslo, ze mam kliknout na strance na odkaz "postavička" a nekdy treba 2x. Ve FF mi to hodilo proxy error 502, takze to nebude nic moc hosting pro web.

Mozna je ten obrazek nejaky stary gif format, ze to preloadovani selze.
Zajimave je, ze na tom jedinem radku mas na konci strednik, ale to by problem delat nemelo.
Zajimave take je, ze kdyz mezi preload a return false vlozim alert, tak na tom radku se obrazek ztrati pred alertem a na jinych radcich se neztraci.
preloadIMG('ea.gif', this); alert(1234);return false
preloadIMG('skrab.gif', this); alert(1234);return false;
Premyslel jsem, ze by to mohlo byt diakritikou, ale v url zadnou nemas.
V prvnim src mas treba 2x lomitko, ale to problem nevysvetluje, takovou adresu prohlizec zkousne.
http://camo.tym.sk/atelier/animacieIMGs//camotymbaner1.gif
V css mas Nborder:1px solid red;
Stava se mi, ze se mi ztrati focus okna, okno skoci do pozadi pod vsechna okna. Nevim proc. Ale jen nekdy.
Jeste mne napadlo, a kdyz preload nenastane, kdyz se obrazek nakesuje, tak se mozna neprovede visible.

Muzes sim te udelat tu stranku s minimalnim nebo zadnym css, bez diakritiky a jinych zbytecnosti? Aby to proslo validatorem html a css.
Muj podobny pokus skoncil tak, ze ted mi nejde navic i lama :)
_es
Profil
Camo:
Na priradenie udalosti použi objektObrázka.onload=funkcia;
Premennú graf máš zdieľanú medzi rôznymi volaniami funkcie, preto sa to „bije“, musíš mať pre každý obrázok premennú/objekt zvlášť.
Camo
Profil
Zdravím,
Ospravedlňujem sa, že som skoro zabudol, ale notifikácie na mail by sa mali dať podľa mňa nastaviť v profile, lebo na to vždy zabúdam...

Tak som to celé upravil podľa vašich návrhov, ale výsledok je ešte horší. Začalo to v tom IE sekať ako v dobe kamennej a tá postavička.gif stále mizne. Formát by mal byť ok, urobil som novú kópiu v Gimpe "postavička2" a aj tá mizne. Ten onload som priradil cez objekt.onload=function, CSS je osekané. Pre porovnanie si môžete predošlý stav(pred preloadom) pozrieť na http://camo.tym.sk/atelier/animacie.php
Celé sa to začalo kôli tomuto: Animovaný gif sa neprehráva
Momentálne upravený script vyzerá takto:
<script type="text/javascript">

var oldWhich='';
/*
function onloadIMG(){
        document.getElementById('obrazok').src=Gurl;
        document.getElementById("obrazok").style.visibility="visible";
        alert("Akonáhle kliknete na ok tak obrázok \"postavička\" v IE7/8 zmizne.");
}

Gurl='';
*/
function preloadIMG(url, which) {
          if(oldWhich === which) return;
        which.style.color='green';
        var graf=new Image();
        graf.onload=function(){
                  document.getElementById('obrazok').src="http://camo.tym.sk/atelier/animacieIMGs/" + url;
                document.getElementById("obrazok").style.visibility="visible";
                alert("Akonáhle kliknete na ok tak obrázok \"postavička\" v IE7/8 zmizne.");
        }
        //Gurl="http://camo.tym.sk/atelier/animacieIMGs/" + url;
          graf.src="http://camo.tym.sk/atelier/animacieIMGs/" + url;
        document.getElementById('obrazok').style.visibility='hidden';
          if(oldWhich != '') oldWhich.style.color='#cc3366';
          oldWhich=which;
}

</script>
Napadá vás ešte niečo?
_es
Profil
Camo:
Na čo ti tam je premenná oldWhich? Sprav to nejako bez nej - tá to asi komplikuje. Inak sa mi nezdá, že by bol ten „preloading“ dobrý nápad. Pre návštevníka je asi zaujímavejšie sa pozerať na postupne sa načítavajúci obrázok, než na nejaké otravné vrtivé koliesko.
Camo
Profil
No to vrtivé koliesko je tam preto, že nie každý browser ti ukáže načítavajúci sa obrázok. A ostal by si bez akejkoľvek informácie, čo sa deje. to že je kostrbaté je teraz druhoradé... No a tá oldWhich je tam kôli fabreniu odkazov. To by fakt nemalo robiť problém. ale skúsim ju vypnúť pre istotu, lebo už fakt nechápem ničomu. Prečo som ja taký šťastlivec, že narazím na každý bug...


EDIT:
Tak to je už naozaj sila. Okomentoval som to oldWhich, a prestalo sa to strácať. Len problém je v tom, že som to tam potreboval kôli IE (ten return čo tam je), lebo ak dva krát klikneš na to isté, tak ti to zmizne. IE totiž evidentne neloaduje to čo už raz natiahol. A teda sa nevykoná onload a ostane to hidden. Pozrite na to ak máte čas... A ak vás niečo napadá tak poraďte prosím.
nevimco2
Profil
Není to náhodou v pravidlech diskuse, nenabízet tvorbu nerozbitých webovek na svém rozbitém webu ?
Camo
Profil
nevimco2
Prosím ťa nebuď trápny. Ak máš čo povedať k tomu o čom sa tu bavíme tak DO TOHO, ale ak nie tak čo chceš? Myslíš, že nikto kto robí stránky neurobil v živote žiadnu chybu? Ja predsa za ten FF bug nemôžem a mohol by som to kľudne nechať tak, ale chcem(kôli sebe) vedieť čo sa tam deje. Tak čo tu ty riešiš? Aké rozbité weby? KDE????? Na doméne tretieho rádu?
Camo
Profil
Tak ešte doplním ak by to niekto potreboval, čo nepredpokladám, že najlepším riešením tejto nočnej mory je jednoduchý trik:
Pred zobrazením obrázka, treba do src pridať prázdny reťazec - document.getElementById("obrazok").src=""; a potom novú adresu samozrejme. A neni treba robiť preload a následne kôli preloadu v IE nemyznú obrázky.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: