Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Ładowanie obrazka
zleek
post
Post #1





Grupa: Zarejestrowani
Postów: 53
Pomógł: 0
Dołączył: 25.10.2006
Skąd: Wrocław

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


Mam następujący kod na stronie:

  1. <img id='foto' onload="preload('obrazek.jpg');" src='obrazek_tymczasowy.gif' />


Mam też zdefiniowaną funkcję preload, która po pełnym wczytaniu pliku obrazek.jpg powinna mi podmienić "obrazek_tymczasowy.gif" obrazkiem "obrazek.jpg".

  1. function preload(obr)
  2. {
  3. var img=new Image();
  4. img.src=obr;
  5. document.getElementById(foto).src=img.src;
  6. }


No i wszystko działa ładnie. Najpierw wyświetla "obrazek_tymczasowy.gif", później - po wczytaniu - wyświetla "obrazek.jpg", ale tu pojawia się problem, ponieważ cały czas wczytuje obrazek.jpg i nie przestaje się wykonywać akcja związana z onload (IMG:http://forum.php.pl/style_emoticons/default/worriedsmiley.gif)

Nie za bardzo wiem, jak rozwiązać ten problem. Jeżeli ktoś z Was zna sposób na jego rozwiązanie lub całkiem alternatywną metodę podejścia do tego problemu - będę wdzięczny za pomoc.

Ten post edytował zleek 19.01.2007, 23:15:20
Go to the top of the page
+Quote Post
ferr
post
Post #2





Grupa: Zarejestrowani
Postów: 122
Pomógł: 3
Dołączył: 18.12.2004

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


Mozliwe, ze dalszy kod Ci cos pieprzy, nie wiem. Sprobuj tego:

  1. function preload(obr)
  2. {
  3. var img=new Image();
  4. img.src=obr;
  5. document.getElementById('foto').src=img.src;
  6. return true;
  7. }
Go to the top of the page
+Quote Post
zleek
post
Post #3





Grupa: Zarejestrowani
Postów: 53
Pomógł: 0
Dołączył: 25.10.2006
Skąd: Wrocław

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


probowalem juz dodawac return true do funkcji ale nie pomaga

po prostu zachowuje sie tak jakby po podmianie obrazka, czyli

  1. document.getElementById(foto).src=img.src;


znow wywolywalo event onLoad i wszystko od nowa - i tak w około :/
Go to the top of the page
+Quote Post
revyag
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 2 258
Pomógł: 16
Dołączył: 21.09.2004
Skąd: Kielce

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


Wygląda mi to na zapętlenie. Po prostu zdarzenie onload jest wywoływane za każdym razem jak załaduje się obrazek.jpg.
Użyj innej metody preloadu obrazków.
Go to the top of the page
+Quote Post
gekon
post
Post #5





Grupa: Zarejestrowani
Postów: 614
Pomógł: 7
Dołączył: 10.11.2003
Skąd: Rzeszów/Kraków

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


a return false; probowales?
Go to the top of the page
+Quote Post
k0b3
post
Post #6





Grupa: Zarejestrowani
Postów: 138
Pomógł: 0
Dołączył: 1.08.2006
Skąd: Kielce

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


hej... mam identyczny problem, a probowalem co piszecie i chyba sprawa nie zostala jeszcze rozwiazana..

Prosze... co dalej zrobic? Tak samo zapetla mi...
Go to the top of the page
+Quote Post
lopik
post
Post #7





Grupa: Zarejestrowani
Postów: 340
Pomógł: 0
Dołączył: 7.07.2006

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


Ale wydaje mi się że zdarzenie onload="" jest tylko dla <body>

A funkcja do zmiany obrazka może być np. taka:

Kod
function preload(obr, ide)
{
    var img = new Image();
    var newSrc = img.src = obr;
    var elm = document.getElementById(ide);
          elm.setAttribute('src', newSrc);
}

  1. <img id="zmien" onclick="pre('zamien.png', this.id)" src="obrazek.png" />


Ten post edytował lopik 3.02.2007, 15:09:12
Go to the top of the page
+Quote Post
k0b3
post
Post #8





Grupa: Zarejestrowani
Postów: 138
Pomógł: 0
Dołączył: 1.08.2006
Skąd: Kielce

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


Znalazlem motyw na stronie autora tego tematu:

http://www.tulikowski.com/?id=9 -> chciałbym coś w tym stylu jak ładują się te miniaturki..
Go to the top of the page
+Quote Post
lopik
post
Post #9





Grupa: Zarejestrowani
Postów: 340
Pomógł: 0
Dołączył: 7.07.2006

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


To popatrz w kod, i poczytaj o AJAX'ie.
Lub poproś autora ww. strony o kod (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
Joy-machine
post
Post #10





Grupa: Zarejestrowani
Postów: 54
Pomógł: 0
Dołączył: 2.02.2007

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


Zrobiłeś rekurencję, która ma szanse zadziałać ale musisz dodać:
- warunek stopu (gdy skończą się obrazki),
- opóźnienie ładowania kolejnego obrazka, setTimeout,

ogólnie wrzucanie onLoad do obrazka to troszkę brzydki sposób, ładniej jest zrobić zewnętrzny skrypt który dobierze się do tych obrazków, będzie ładował nowe z opóźnieniem. Jeżeli nie dasz rady to chyba lepiej ściągnij... gotowiec (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) Co do ajaxa to tez można, ale to troszkę zbyt trywialny skrypt żeby ładować ajax.
Go to the top of the page
+Quote Post
k0b3
post
Post #11





Grupa: Zarejestrowani
Postów: 138
Pomógł: 0
Dołączył: 1.08.2006
Skąd: Kielce

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


Miałby ktoś coś takiego gotowego... Sorki, ale naszukałem się na forum i ogólnie w necie to sa kolosalne skrypty...

Bardzo prosze, niech ktoś napisze rozwiazanie.. Z java jestem troche kiepski.. ;-)

Hej nikt nie ma takiego skryptu w swoich zbiorach (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)

(IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
gekon
post
Post #12





Grupa: Zarejestrowani
Postów: 614
Pomógł: 7
Dołączył: 10.11.2003
Skąd: Rzeszów/Kraków

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


Zamiast do onload obrazka daj do onload okna (window.onload), Joy-machine już to sugerował.
Go to the top of the page
+Quote Post
k0b3
post
Post #13





Grupa: Zarejestrowani
Postów: 138
Pomógł: 0
Dołączył: 1.08.2006
Skąd: Kielce

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


eh.. niezauwazylem tego...
w nagłówku strony http://www.tulikowski.com/
<script type="text/javascript" src="galery.js"></script>
-> http://www.tulikowski.com/galery.js

jest tam skrypt:

  1. var xmlHttp=createXmlHttpRequestObject();
  2. var i;
  3. var zaladowany = new Array();
  4.  
  5.  
  6. //funkcje odpowiedzialne za wstepne zaladowanie grafiki
  7. function preload(obr, nr)
  8. {
  9. var pole= "foto_" + nr;
  10. var plik= "http://www.tulikowski.com/"+obr;
  11. var plik2="http://tulikowski.com/"+obr;
  12. if(document.getElementById(pole))
  13. {
  14. if(document.getElementById(pole).src=="http://www.tulikowski.com/img/w.gif" || document.getElementById(pole).src=="http://tulikowski.com/img/w.gif")
  15. {
  16. zaladowany[nr]="1";
  17. loadImage(obr, nr);
  18. }
  19. }
  20. return false;
  21. }
  22.  
  23. function loadImage(obr, nr)
  24. {
  25.  
  26. var pole= "foto_" + nr;
  27. var img=new Image();
  28. img.src=obr;
  29. document.getElementById(pole).src=img.src;
  30. if(document.getElementById("loading"))
  31. setTimeout("document.getElementById('loading').style.visibility='hidden'", 2500);
  32. }
  33. //koniec funkcji


to chyba o to chodzi...
jak daje:

<img id="foto_0" src="jakis tam obrazek.jpg" onload="preload('jakis tam obrazek.jpg', 0);" /> - nie uruchamia sie.

Moze teraz jasniej... co mam zrobic?
Go to the top of the page
+Quote Post
gekon
post
Post #14





Grupa: Zarejestrowani
Postów: 614
Pomógł: 7
Dołączył: 10.11.2003
Skąd: Rzeszów/Kraków

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


Zamiast w obrazku, daj pod deklaracją swoich funkcji w nagłówku:

  1. window.onload = function(){
  2. preload('jakis tam obrazek.jpg', 0);
  3. ...
  4. }
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 17.09.2025 - 10:27