Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript]Preloader
Forum PHP.pl > Forum > Przedszkole
kamilo818
Witajcie.

Napisałem preloader obrazków na stronie:
  1. var images=$('img');
  2. console.log(images);
  3. var count=0;
  4. var step = 100/images.length;
  5. $('body').append('<div class="loader2"><img src="http://page4u.waw.pl/shop/712.gif"/><div class="loader_box"> </div></div>');
  6. images
  7. .load(function() {
  8. count++;
  9. console.log(count);
  10. $('.loader_box').html(Math.round(count*step)+"%<br>");
  11. if(count==images.length){
  12. $('.loader2').fadeOut();
  13. }
  14. })
  15. .error(function() { console.log("error loading image"); })
  16. .attr("src", $(this).attr("src"))
  17. ;
  18.  
  19.  
  20. $('div.wiecej').click(function(){
  21. var limit = parseInt($(this).attr('limit'))+20;
  22. window.location.hash =limit;
  23. });


Problem polega na tym że często się ten kot wykonuje tylko do 25% lub 49%. Mimo ze zmienna images zawiera wszystkie obrazki ze strony i na samej stronie widac ze wszystkie się wczytały.
Jak zaczne odswiezac stronę to w koncu przejdzie do 100%. Co tu jest nie tak?
markuz
Cytat
kot

mellow.gif

A spróbuj images.each(function() { $(this).load(); })
Zobacz też cache - http://forum.php.pl/index.php?showtopic=234172
kamilo818
hehe kot biggrin.gif

  1. images.each(function() {
  2. $(this).load(function() {
  3. count++;
  4. console.log(count);
  5. $('.loader_box').html(Math.round(count*step)+"%<br>");
  6. if(count==images.length){
  7. $('.loader2').fadeOut();
  8. }
  9. })
  10. .error(function() { console.log("error loading image"); })
  11.  
  12. ;
  13. })

Działa tak samo:/

I nie mam pojecia o co chodzi z cache. Jak to sprawdzic?
markuz
Żeby to Ci działało jak trzeba musisz wczytywać kolejny obrazek dopiero jak się wczyta poprzedni. Wejdź w konsolę i sprawdź zakładkę Sieć - zobaczysz, że wszystkie obrazki się wczytują na raz - przez co niektóre mogą się nie wczytać.
kamilo818
Możesz podpowiedzieć jak to zrobić?
Np w pętli?
Jak mam w tablicy images obrazki ze strony i po kolei je np w petli for wczytywać?
Tylko jka zrobić żeby kolejny się zaczął wczytywać jak poprzedni się wczyta?
kamilo818
Coś takiego mam ale nie za bardzo działa.

  1. var images=$('img');
  2. var count=0;
  3. var step = 100/images.length;
  4. $('body').append('<div class="loader2"><img src="http://page4u.waw.pl/shop/712.gif"/><div class="loader_box"> </div></div>');
  5. for(var i=0;i<images.length;i++){
  6. var load = function(i) {
  7. if(i > images.length) return false;
  8. load.success(function() {
  9. count++;
  10. console.log(count);
  11. $('.loader_box').html(Math.round(count*step)+"%<br>");
  12. if(count==images.length){
  13. $('.loader2').fadeOut();
  14. }
  15. });
  16. }
  17. }
trueblue
A najlepsze jest to, że: http://forum.php.pl/index.php?showtopic=233435
kamilo818
Zgadza się ale ten kod nie działa mi w ogóle dlatego piszę nowy temat
trueblue
Kod
$('body').append('<div class="loader2"><img src="http://page4u.waw.pl/shop/712.gif"/><div class="loader_box"> </div></div>');

var images=$('img');
var step = 100/images.length;
var count=0;
for(var i=0;i<images.length;i++){
    var img=document.createElement('img');
    img.onload=function(){
        count++;
        $('.loader_box').html(Math.round(count*step)+"%<br>")
        if(count==images.length){
            $('.loader2').fadeOut();
        }
    }
    img.src=$(images[i]).attr('src');
}
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.