2010-12-13 21 views
5

:Görsel ön yükleme tamamlanıncaya kadar Javascript engelleniyor mu? Aşağıdaki kod ile birkaç görüntü önceden yüklemek için javascript kullanıyorum

// do the following for each image where 'this' is the path 
(new Image()).src = this; 

Bu iyi çalışır - kundakçı ben her resim indir her tekrardan sonra kapalı ateş olmak görebilirsiniz.

Sorunum, gerçek karşıdan yükleme tamamlanıncaya kadar engellemek istiyorum. Diğer bir deyişle, tüm resimler indirilene kadar kullanıcıya "görüntü indirme" iletişimini göstermek istiyorum.

Şu anda ön yükleme döngüsü yürütülmeden önce iletişim kutusunu gösterecek olursam (ve iletişim kutusu tamamlandıktan sonra iletişim kutusunu kaldırırsa), yalnızca indirme isteklerini gerçek indirme işlemi tamamlanmadığında yakalar.

Gerçek indirmenin eşzamansız olduğu göründüğü için, tüm indirmeler tamamlanana kadar engelleme yapmanın bir yolu var mı?

cevap

0

Ön yükleme tamamlanıncaya kadar "yükleme" bölümünü gösterirken, görüntüleri önceden yüklediğiniz içeriği içeren divı gizleyebilirsiniz. Böyle bir şey olacaktır:

$('#content').hide(); 
$('#loading').show(); 

// for loop loading images here 

$('#loading').hide(); 
$('#content').show(); 
+0

teşekkürler ama ben soruma anlamış sanmıyorum. Görüntüleri yükleyen döngü sadece indirmeyi tetikler - tamamlanana kadar engellenmez. – lok

2
$(function() { 
    var imgs = $('img'); 
    var length = imgs.length; 
    var loaded = 0; 
    $('img').hide().each(function() { 
     $(this).bind('load', function() { 
      if ((++loaded) === length) { 
       imgs.show(); 
      }else { 
       //show images are still downloading 
      } 
     }); 
    }); 
}); 
+0

Bağlama yaparken '.each()' a gerek yok :) –

+0

@nick bunu biraz daha açıklayabilir, öğrenmeyi seviyorum .. Geçtiğimiz 3 hafta için jQuery ile çalışmadım :) –

+1

'.bind()', kümedeki tüm öğeler üzerinde çalışır ve '.load()' gibi çoğu olay için bir kısayol da vardır, bu nedenle bunu aşağı daraltmış olursunuz: http: //www.jsfiddle. net/nick_craver/Uu2jz/... '.src' 'nin daha sonra ayarlandığını ve resimlerin daha önce yüklenmediğini, bu durumda eğer' loop 'komutunu verdikten sonra' .complete 'kontrol edip kontrol etmeniz gerektiğini varsayalım sahip olanlar üzerinde olay. –

İlgili konular