Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Problem z ładowaniem obrazków (odczyt szerokości kontenera)
m72
post
Post #1





Grupa: Zarejestrowani
Postów: 86
Pomógł: 0
Dołączył: 25.12.2012

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


Witam, problem jest dość szeroko poruszany w internecie ale ciężko znaleźć prostą odpowiedź.
W sktócie, chce zrobić sktypt który:
1. Załaduje na stronę obrazki poprzez jquery append
2. Poczeka aż one się załadują
3. Odczyta szekokość całego kontenera do którego się załadowały.

Obrazki ładuję do tabeli bo tego wymaga dalsza (tu nie zamieszczona) część skryptu, ale to nieistotne.
Wiem, że jest wiele pluginów do ładowania obrazków.
Czy ktoś mógłby powiedzieć jak zmodyfikować ten skrypt tak żeby działał jak w założeniach ?

Teraz problem polega na tym że skryp przelatuje szybciej niż obrazki (specjalnie duże) się załadują i odczytana w konsoli szerokość jest zero.
po odświeżeniu strony jest już wszystko ok. Żeby sprawdzić błąd ponownie trzeba wyczyścić pamięć podręczną przegądarki i ją zresetować.

Oto kod:

  1. <!DOCTYPE html>
  2. <meta charset="UTF-8">
  3. <script src="http://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
  4. </head>
  5. <div style="height:500px; background-color:#eee; overflow:auto;">
  6. <table id="fotokontener"><tr></tr></table>
  7. </div>
  8.  
  9. $("#fotokontener tr").append('<td><img src="http://www.hdwallpapersfullhd.net/wp-content/uploads/2014/05/Golden-Gate-Bridge-HD-Wallpapers-Golden-Gate-Bridge-Wallpaper.jpg"/></a></td>');
  10. $("#fotokontener tr").append('<td><img src="http://cdn.wonderfulengineering.com/wp-content/uploads/2014/01/digital-wallpaper-3.jpg"/></a></td>');
  11. console.log( $("#fotokontener").width() );
  12.  
  13.  
  14.  
  15.  
  16. </body>
  17. </html>
Go to the top of the page
+Quote Post
trueblue
post
Post #2





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


Czekasz aż obrazki się załadują, po skończeniu ładowania mierzysz szerokość kontenera.
Temat: AJAXPHPpreloader dobrze
Go to the top of the page
+Quote Post
m72
post
Post #3





Grupa: Zarejestrowani
Postów: 86
Pomógł: 0
Dołączył: 25.12.2012

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


Jak powyższe by się miało do mojego kodu bo po prostu nie kumam tamtego tematu.
Próbowałem z funkcją .load() z jquery ale ona poprostu nie działa dla obrazków.

Ten post edytował m72 1.08.2014, 16:30:56
Go to the top of the page
+Quote Post
trueblue
post
Post #4





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


Tak:
var images=$('#fotokontener td img');
reszta bez zmian.
Mierzenie kontenera w linii 8.
Proponuję Ci wywoływanie kodu JS wewnątrz funkcji ready().
Go to the top of the page
+Quote Post
m72
post
Post #5





Grupa: Zarejestrowani
Postów: 86
Pomógł: 0
Dołączył: 25.12.2012

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


Nie bardzo kumam jak to działa ale DZIAŁA ! (IMG:style_emoticons/default/smile.gif) dzięki.
Zamieszczam cały działający kod gdzi w 2 miejscach jest odczytywanie szerokości kontenera i widać ze dopiero po załadowaniu zdjęć jest ok.
Kod się pewnie komuś przyda bo to bardzo często poruszany temat na forach ale nigdzie nie ma tak prostego rozwiązania (IMG:style_emoticons/default/smile.gif)

  1. <!DOCTYPE html>
  2. <meta charset="UTF-8">
  3. <script src="http://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
  4. </head>
  5. <div style="height:500px; background-color:#eee; overflow:auto;">
  6. <table id="fotokontener"><tr></tr></table>
  7. </div>
  8.  
  9.  
  10.  
  11. $("#fotokontener tr").append('<td><img src="http://www.hdwallpapersfullhd.net/wp-content/uploads/2014/05/Golden-Gate-Bridge-HD-Wallpapers-Golden-Gate-Bridge-Wallpaper.jpg"/></a></td>');
  12. $("#fotokontener tr").append('<td><img src="http://cdn.wonderfulengineering.com/wp-content/uploads/2014/01/digital-wallpaper-3.jpg"/></a></td>');
  13. console.log( $("#fotokontener").width() );
  14.  
  15. var images=$('#fotokontener td img');
  16. var count=0;
  17. for(var i=0;i<images.length;i++){
  18. var img=document.createElement('img');
  19. img.onload=function(){
  20. count++;
  21. if(count==images.length){
  22. console.log( $("#fotokontener").width() );
  23. }
  24. }
  25. img.src=$(images[i]).attr('src');
  26. }
  27.  
  28. </body>
  29. </html>
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: 23.08.2025 - 04:18