Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> onLoad załadowania obrazka, zdarzenie wywołuje się zbyt szybko
Athlan
post 12.07.2006, 11:18:47
Post #1





Grupa: Developerzy
Postów: 823
Pomógł: 12
Dołączył: 18.12.2005

Ostrzeżenie: (0%)
-----


chciałem sobie zrobić loading image data na imagesie, ale zdarzenie krycia ramki z loadingiem odbywa się za szybko, otóż, jak mam takie coś:
  1. <img src="..." onLoad="schowaj-ta-glupia-ramke()" />

to akcja wykonuje się nie po załadowaniu obrazka, ale już po załadowaniu w kodzie HTML samego znacznika IMG

co mam zrobić, aby funkcja była wykonana dopiero po całkowitym załadowaniu obrazka?

P.S. guglowałem i te same skrypty co ja zrobiłem sam (czyli onload przy img)


--------------------
Portfolio: Vgroup.pl | athlan.pl | Test.php.pl - sprawdź się z wiedzy o PHP i ułóż własne pytania!
Pomogłem? Kliknij pod postem.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 10)
siemakuba
post 12.07.2006, 21:38:09
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 112
Pomógł: 20
Dołączył: 10.04.2005

Ostrzeżenie: (0%)
-----


Zdarzenie onload odpala się kiedy załaduje się dany kod HTML, a nie obrazek jak w tym przypadku.
Obiekty mają właściwość readyState, która odpowiada za stopień załadowania danego elementu - 0 - początek do 4 - załadowny. Tej właściwości odpowiada zdarzenie onreadystatechange, które wywoływane jest za każdym razem kiedy zmienia się właściwość readyState. Pozostaje więc dodać eventHandler dla tego zdarzenia, sprawdzać zmianę, i jeżeli osiągniesz stan 'complete' (readyState = 4) odpalać odpowiednią akcję.

Uwaga: zielonego pojęcia nie mam jak to wygląda dla czegokolwiek innego niż IE.

pozdr.
Go to the top of the page
+Quote Post
Athlan
post 13.07.2006, 09:56:17
Post #3





Grupa: Developerzy
Postów: 823
Pomógł: 12
Dołączył: 18.12.2005

Ostrzeżenie: (0%)
-----


Nie wiem czy dobrze rozumem ale mam takie coś:

kod JS:
  1. function loading_preview()
  2. {
  3. if(readyState == 4)
  4. {
  5. // instrukcje
  6. }
  7. }

i wywołanie:
  1. <img src="..." onreadystatechange="loading_preview()">


--------------------
Portfolio: Vgroup.pl | athlan.pl | Test.php.pl - sprawdź się z wiedzy o PHP i ułóż własne pytania!
Pomogłem? Kliknij pod postem.
Go to the top of the page
+Quote Post
siemakuba
post 13.07.2006, 12:56:06
Post #4





Grupa: Przyjaciele php.pl
Postów: 1 112
Pomógł: 20
Dołączył: 10.04.2005

Ostrzeżenie: (0%)
-----


no mniej wiecej chyba tak. Tyle że powinieneś chyba jeszcze odwolywac sie do obiektu, wiec tak:
Kod
function loading_preview(obj)
{
if(obj.readyState == 4)
{
// instrukcje
}
}

i wywołanie:
  1. <img src="..." onreadystatechange="loading_preview(this)">


pozdr.
Go to the top of the page
+Quote Post
Athlan
post 14.07.2006, 15:15:47
Post #5





Grupa: Developerzy
Postów: 823
Pomógł: 12
Dołączył: 18.12.2005

Ostrzeżenie: (0%)
-----


  1.  
  2.  
  3. <!--
  4. function loading_preview(object)
  5. {
  6. if(object.readyState == 4)
  7. {
  8. alert('załadowano imagesa biggrin.gif');
  9. }
  10. }
  11. //-->
  12.  
  13. </head>
  14.  
  15. <img src="http://www.onet.pl/_m/b733c669d2231d74ffc6c818c05b290a,2,1.jpg" alt="Kaczyński biggrin.gif" onReadyStateChange="loading_preview(this)">
  16. </body>
  17.  
  18. </html>


zleksza nie działa smile.gif


--------------------
Portfolio: Vgroup.pl | athlan.pl | Test.php.pl - sprawdź się z wiedzy o PHP i ułóż własne pytania!
Pomogłem? Kliknij pod postem.
Go to the top of the page
+Quote Post
siemakuba
post 14.07.2006, 15:33:38
Post #6





Grupa: Przyjaciele php.pl
Postów: 1 112
Pomógł: 20
Dołączył: 10.04.2005

Ostrzeżenie: (0%)
-----


no okej, ja sie pomyliłem :) co nie zmienia faktu, że mogłeś szybciutko złapać gdzie jest error pogrzebany :)

readyState nie zwraca jednak liczby, ale string z określeniem stanu. 4 == 'complete', więc zamiast sprawdzać czy readyState jest równe 4 sprawdzaj czy jest równe 'complete'.

pozdr.
Go to the top of the page
+Quote Post
Athlan
post 14.07.2006, 16:11:34
Post #7





Grupa: Developerzy
Postów: 823
Pomógł: 12
Dołączył: 18.12.2005

Ostrzeżenie: (0%)
-----


skoro sie pytam to widocznie nie znam sie na tej funkcji smile.gif

no tak, działa ale tylko pod IE, nie da się jakoś tego zrobić pod Opere ?


--------------------
Portfolio: Vgroup.pl | athlan.pl | Test.php.pl - sprawdź się z wiedzy o PHP i ułóż własne pytania!
Pomogłem? Kliknij pod postem.
Go to the top of the page
+Quote Post
siemakuba
post 15.07.2006, 09:11:48
Post #8





Grupa: Przyjaciele php.pl
Postów: 1 112
Pomógł: 20
Dołączył: 10.04.2005

Ostrzeżenie: (0%)
-----


Cytat
skoro sie pytam to widocznie nie znam sie na tej funkcji
nie no luzik :) najwazniejsze ze doszlismy do rozwiazania :)
Cytat
no tak, działa ale tylko pod IE
No tak, tak jak pisalem na poczatku. Akurat ta wlasciwosc jest chyba wymyslona przez MS, wiec na innych przegladarkach nie da rady.... Nie wiem tez czy jest jakis odpowiednik na Mozilla / Opere....

pozdr.
Go to the top of the page
+Quote Post
Athlan
post 27.07.2006, 09:39:40
Post #9





Grupa: Developerzy
Postów: 823
Pomógł: 12
Dołączył: 18.12.2005

Ostrzeżenie: (0%)
-----


warto zaznaczyć, że stare IE (IE 4 tongue.gif no ale co... testuje sie) wywala błędy że nieznany obiekt tongue.gif


--------------------
Portfolio: Vgroup.pl | athlan.pl | Test.php.pl - sprawdź się z wiedzy o PHP i ułóż własne pytania!
Pomogłem? Kliknij pod postem.
Go to the top of the page
+Quote Post
erix
post 27.07.2006, 20:49:55
Post #10





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




A nie prościej by było
Kod
onload="setTimeout('funkcja', nnn)"
?


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
LBO
post 27.07.2006, 21:09:07
Post #11





Grupa: Zarejestrowani
Postów: 1 415
Pomógł: 117
Dołączył: 7.09.2005
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Może to Tobie pomoże, działa na większości przeglądarek (przynajmniej rok temu działało smile.gif).
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 25.06.2025 - 04:47