ugrás a tartalomhoz

IE6 alatt véletlenszerűen eltűnő képek, dinamikusan generált tartalomban

Weiyo · 2007. Szep. 14. (P), 13.02
Üdv!

Első olyan problémám, amivel egy közösséghez fordulok :) Adott egy weboldal, ahol png ikonokat használok, de úgy, hogy átmennek egy php szkripten és az gif-é konvertálja őket, a háttér függvényében. Teljesen jól működik, kivéve természetesen IE6 alatt, ahol néha (kb. 40% eséllyel) nem jelenik meg az ikonok egy része. Jobb click+properties-re látszik a kép mérete (16x16px) és a show picture-re kattintva megjelenik rendesen. Csak olyan tartalmaknál jelentkezik, amit ajax-al töltöttem le és innerHTML-el adtam hozzá az oldalhoz.

Furcsaság, hogy egy régebbi ajaxos munkámban, hasonló módon generálok és használok dinamikusan képeket, és ott minden megy. Debugolás, próbálgatás közben sikerült már statikus gif képpel is előcsalnom a hibát, tehát nem hiszem, hogy a php a gond.

Egy másik probléma, ami már nem fért bele a topicba, hogy IE6 alatt, néha behal a szinkron ajax művelet és "The download of the specific resource failed" hibaüzenetet kapok. Ez is véletlenszerűen jelentkezik.

A probléma tesztelhető ezen az oldalon, ha rákattintotok a "beírás a vendégkönyvbe" gombra, akkor a betöltött tartalomban, a küldés gomb ikonja, néha nem jelenik meg.

Olyanoktól várok segítséget, akik kapcsolatba kerültek a fenti jelenségekkel, és tudják a megoldást - a tippelgetésbe már belefáradtam :)

Előre is köszi!
 
1

width

Barkóczi Roland · 2007. Szep. 14. (P), 13.49
mindenhova, a befoglalo diveknek is allits be szelesseget a css-ben.
2

width

Weiyo · 2007. Szep. 14. (P), 14.20
Ez így elég homályos. Ahol float-ot használok, vagy ahol van értelme, ott fix a szélesség, máshol, meg nehogy már kötelező legyen, mégha IE-ről is van szó :) Ez a jelenség nem csak a linkben megadott oldalt érinti, hanem egy másikat is, és csak az innerHTML-el babrált tartalmaknál. Valahol olvastam, hogy lehet, hogy cache probléma de azt a vonalat már végigszenvedtem - erdménytelenül.
3

gif

cSuwwi · 2007. Szep. 14. (P), 16.23
A png ikonokat miért konvertálod át egy rosszabb formátumba? Ez nekem magas.
Ezeket a konvertált ikonokat onfly használod csak fel, vagy elmented, és később cacheként használod?
4

gif vs png

Weiyo · 2007. Szep. 14. (P), 17.42
Megnéztem a honlapod. Te AlphaImageLoader+js megoldást használsz, ami abban az esetben tökéletes. Én is ezt használtam volna...viszont nekem, bizonyos esetekben nagyon sok ikont kell megjelenítenem/eltüntetnem js-el, ami azt jelenti, hogy minden alkalommal, amikor változik a DOM, futtatnom kellene pl. azt a függvényt amit te is használsz (alphaFixIE). Ráadásul, a sok átlátszó képtől baromira be tud lassulni az IE. Mivel általában egyszínű háttérre kerülnek rá az ikonok, sokkal egyszerűbb szerver oldalon gif-é konvertálni őket. Nincs információvesztés sem, mert 16x16 pixel az ugye max. 256 szín lehet, ráadásul villanás sincs betöltés közben. Az én esetemben tehát ez volt a célravezetőbb.

De egyébként kipróbáltam úgy is, hogy hagyom a képeket eredeti formájukban, de ez nem oldotta meg a problémát. Hangsúlyozom, hogy tetszőleges formátumú (gif, png, jpg), statikus képpel is jelentkezik a dolog.
5

kérdés

Fraki · 2007. Szep. 15. (Szo), 03.30
Hogy debugolsz?

Én nem tudom most reprodukálni a jelenséget.

Furcsaság, hogy egy régebbi ajaxos munkámban, hasonló módon generálok és használok dinamikusan képeket, és ott minden megy.

Ebben túl sok információ nincs. Minden hiba olyan szokott lenni, hogy eddig jó volt, most meg rossz.

Debugolás, próbálgatás közben sikerült már statikus gif képpel is előcsalnom a hibát, tehát nem hiszem, hogy a php a gond.

Ha a kép lejön a megfelelő url-en, akkor ez nyilvánvaló.

Workarounddal próbálkoztál? Utólag újra beállítani a képet, kicsit machinálni rajta, ajax műveletek stádiumai között késleltetni setTimeout()-tal (IE-ben tipikus segítség, a Prototype is tele van vele) stb.

Milyen ajax keretrendszert használsz? Saját? (Nem jó.) A js kódban miért nincs indentálás? (Ezzel semmit nem spórolsz, csak legfeljebb én nem látok belőle semmit.)

IE7 alatt törik a szkript.
6

A megoldás

Weiyo · 2007. Szep. 16. (V), 21.27
Kössz a tippeket, végül is megoldottam. Azt továbbra sem tudom, hogy mi az oka a dolognak, de hát IE-ről van szól, úgyhogy már megszoktam. Ha valaki esetleg belefutna a fenti problémába, nálam a következő működött: Az innerHTML frissítés után, IE6 esetében setTimeout(..., 0)-al újra frissítem a node tartalmát. Persze így aszinkron lesz a program futása, ami elég trágya dolog, de nekem más nem működött. Végül is általában az innerHTML frissítés, amúgy is egy esemény utolsó művelete szokott lenni, szóval annyira nem gáz a dolog...

A js kódban miért nincs indentálás? (Ezzel semmit nem spórolsz, csak legfeljebb én nem látok belőle semmit.)


:D:D Nah ezen jót nevettem. A poént nem lövöm le, hátha rájössz magad is :)

IE7 alatt törik a szkript.


Ezért köszi! Sajna IE7 alatt nem tudtam eddig tesztelni. A hiba oka egyébként egy send(false) XMLHTTPRequest művelet volt, ami helyesen send(null).
7

na ugye

Fraki · 2007. Szep. 17. (H), 00.12
IE6 esetében setTimeout(..., 0)

Mondtam én. (10 ms-mal valószínűleg jobban jársz)
Persze így aszinkron lesz a program futása, ami elég trágya dolog

Már miért lenne az?
Nah ezen jót nevettem. A poént nem lövöm le, hátha rájössz magad is :)

Nem, és nem is fogok rajta gondolkozni, jó titkolózást.
A hiba oka egyébként egy send(false) XMLHTTPRequest művelet volt, ami helyesen send(null).

Ezért írtam, hogy nem jó ajax framework nélkül ajaxozni. Az kb. olyan, mintha ma a directx korában még mindig soundblasterre meg GUS-ra írnál játékot.
8

...és kössz a halakat!

Weiyo · 2007. Szep. 18. (K), 00.42
Bocs, de igazából semmi újat nem mondtál. A setTimeout-ra már rögtön az elején gondoltam csak szerettem volna, "szinkron" megoldást a problámra. Ezt most csak azért írom, mert annyira tipikus ez az egész... Direkt kértem, hogy csak olyanok írjanak, akik kapcsolatba kerültek a problémával, erre csupa okoskodást kaptam. Mondjuk nem vártam mást. Mindig is távol állt tőlem a fórumok stílusa. Most az egyszer én is kipróbáltam...utoljára.

A többi megjegyzésedre, meg nem fogok reagálni, akármekkora késztetést is ültettél belém. Biztos te bírnád tovább az érvelést.
Legyen igazad mindenben :) Sőt mivel úgysem bírod ki, hogy ne reagálj, legyen az utolsó szó is a Tiéd :)

Minden jót és szépet :)