Thread View: pl.comp.lang.javascript
9 messages
9 total messages
Started by Peter May
Wed, 26 Aug 2009 10:49
Opera i getElementsByTagName("img")[0].onload
Author: Peter May
Date: Wed, 26 Aug 2009 10:49
Date: Wed, 26 Aug 2009 10:49
31 lines
1652 bytes
1652 bytes
Jest prosta lista:
<ul>
<li><a href="..."><img src="..."/></a></li>
<li><a href="..."><img src="..."/></a></li>
[...]
</ul>
którą:
1. Pobieram xhr-em.
2. Wstawiam do kontenera o id="x".
3. Chcę uruchomić funkcję jakasfunkcja() zaraz po załadowaniu pierwszego
obrazka z tej listy i robię tak:
x.getElementsByTagName("img")[0].onload = function(){
jakasfunkcja();
}
Problem w tym, że o ile na Firefox 3, IE 7 i Safari 4 działa to
poprawnie, o tyle w Operze (moja 10.00 Beta 3) jakasfunkcja() nie jest
wywoływana. Sprawdzam przez alert(ABC.getElementsByTagName("img")[0]) co
będę miał w wyniku na Operze i dostaję:
[object HTMLImageElement]
A zatem Opera widzi obiekt, ale funkcji nie wywołuje po załadowaniu
obrazka. Czy to jakiś bug? Czy może coś pominąłem w kodzie?
--
Peter
Re: Opera i getElementsByTagName("img")[0].onload
Author: Exe Very Cute
Date: Wed, 26 Aug 2009 13:25
Date: Wed, 26 Aug 2009 13:25
13 lines
1487 bytes
1487 bytes
Peter May pisze:
> Problem w tym, że o ile na Firefox 3, IE 7 i Safari 4 działa to
> poprawnie, o tyle w Operze (moja 10.00 Beta 3) jakasfunkcja() nie jest
> wywoływana. Sprawdzam przez alert(ABC.getElementsByTagName("img")[0]) co
> będę miał w wyniku na Operze i dostaję:
ZTCW to Opera wywoła load tylko wtedy gdy obrazka nie ma w cache
przeglądarki i zostaje on faktycznie pobrany z serwera. Nie wiem czy to
jest jeszcze aktualna wiedza ;-]
Pozdr
Exe Very Cute
Re: Opera i getElementsByTagName("img")[0].onload
Author: Peter May
Date: Wed, 26 Aug 2009 13:33
Date: Wed, 26 Aug 2009 13:33
21 lines
1727 bytes
1727 bytes
Exe Very Cute pisze:
> Peter May pisze:
>
>> Problem w tym, że o ile na Firefox 3, IE 7 i Safari 4 działa to
>> poprawnie, o tyle w Operze (moja 10.00 Beta 3) jakasfunkcja() nie
>> jest wywoływana. Sprawdzam przez
>> alert(ABC.getElementsByTagName("img")[0]) co będę miał w wyniku na
>> Operze i dostaję:
>
> ZTCW to Opera wywoła load tylko wtedy gdy obrazka nie ma w cache
> przeglądarki i zostaje on faktycznie pobrany z serwera. Nie wiem czy to
> jest jeszcze aktualna wiedza ;-]
A no właśnie dokładnie taki efekt teraz widzę po głębszych testach.
Jeśli cache jest pusty i obiekt ładuje się pierwszy raz, to zdarzenie
onload jest wywoływane. Jeśli z cache, to faktycznie nie jest.
Pytanie tylko jak to naprawić?
--
Peter
Re: Opera i getElementsByTagName("img")[0].onload
Author: Exe Very Cute
Date: Wed, 26 Aug 2009 15:22
Date: Wed, 26 Aug 2009 15:22
7 lines
1263 bytes
1263 bytes
Peter May pisze: > Pytanie tylko jak to naprawić? Obejść. Psując cache. Innego pomysłu nie mam. Pozdr Exe Very Cute
Re: Opera i getElementsByTagName("img")[0].onload
Author: Peter
Date: Wed, 26 Aug 2009 17:33
Date: Wed, 26 Aug 2009 17:33
10 lines
1192 bytes
1192 bytes
Exe Very Cute pisze: > Peter May pisze: >> Pytanie tylko jak to naprawić? > > Obejść. Psując cache. Innego pomysłu nie mam. Albo wywołać funkcję dla Opery bez zdarzenia onload. Trudno. -- Peter
Re: Opera i getElementsByTagName("img")[0].onload
Author: nalesnik
Date: Thu, 27 Aug 2009 06:33
Date: Thu, 27 Aug 2009 06:33
16 lines
1274 bytes
1274 bytes
Peter wrote: > Exe Very Cute pisze: >> Peter May pisze: >>> Pytanie tylko jak to naprawić? >> >> Obejść. Psując cache. Innego pomysłu nie mam. > > Albo wywołać funkcję dla Opery bez zdarzenia onload. Trudno. > img.src = img.srs + '?someRandString' pomoze? -- pozdr nalesnik
Re: Opera i getElementsByTagName("img")[0].onload
Author: nalesnik
Date: Thu, 27 Aug 2009 06:34
Date: Thu, 27 Aug 2009 06:34
16 lines
1296 bytes
1296 bytes
Peter wrote: > Exe Very Cute pisze: >> Peter May pisze: >>> Pytanie tylko jak to naprawić? >> >> Obejść. Psując cache. Innego pomysłu nie mam. > > Albo wywołać funkcję dla Opery bez zdarzenia onload. Trudno. > img.src = img.src + '?someRandString'; pomoże? -- pozdr nalesnik
Re: Opera i getElementsByTagName("img")[0].onload
Author: porneL
Date: Thu, 27 Aug 2009 17:24
Date: Thu, 27 Aug 2009 17:24
23 lines
1564 bytes
1564 bytes
On Thu, 27 Aug 2009 07:34:03 +0100, nalesnik <mu5k@o2.o2.o2.o2.pl> wrote:
>>>> Pytanie tylko jak to naprawić?
>>>
>>> Obejść. Psując cache. Innego pomysłu nie mam.
>>
>> Albo wywołać funkcję dla Opery bez zdarzenia onload. Trudno.
>>
>
> img.src = img.src + '?someRandString';
> pomoże?
To jest podpada pod psucie cache, tylko że jest jeszcze bardziej szkodliwą
metodą.
Spróbuj addEventListener()(z capture i bez).
Jak to nie da rady, to można zrobić własną nędzną emulację onload przez
sprawdzanie image.width>0 timerem.
--
http://pornel.net
this.author = new Geek("porneL");
Re: Opera i getElementsByTagName("img")[0].onload
Author: Peter
Date: Thu, 27 Aug 2009 21:09
Date: Thu, 27 Aug 2009 21:09
31 lines
1874 bytes
1874 bytes
porneL pisze:
> On Thu, 27 Aug 2009 07:34:03 +0100, nalesnik <mu5k@o2.o2.o2.o2.pl> wrote:
>
>>>>> Pytanie tylko jak to naprawić?
>>>>
>>>> Obejść. Psując cache. Innego pomysłu nie mam.
>>>
>>> Albo wywołać funkcję dla Opery bez zdarzenia onload. Trudno.
>>>
>>
>> img.src = img.src + '?someRandString';
>> pomoże?
>
> To jest podpada pod psucie cache, tylko że jest jeszcze bardziej
> szkodliwą metodą.
>
> Spróbuj addEventListener()(z capture i bez).
Czyli przez:
obiekt.addEventListener("load", funkcja, false);
Rzecz jasna, z warunkiem dla Opery.
> Jak to nie da rady, to można zrobić własną nędzną emulację onload przez
> sprawdzanie image.width>0 timerem.
Fakt. Można też tak, ale rzeczywiście nędzne :/
--
Peter
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads