उस प्रीलोड स्क्रिप्ट को देखने के बाद, ऐसा प्रतीत होता है कि स्क्रिप्ट अगले छवि पर जाने से पहले एक छवि को लोड करने की प्रतीक्षा नहीं करती है। मेरा मानना है कि यह आपके ब्राउज़र को लटकने का कारण बनता है - आप अनिवार्य रूप से ब्राउजर को एक ही समय में एक सौ छवियों को लोड करने के लिए कह रहे हैं।
एक बेहतर तरीका एक पुनरावर्ती समारोह का उपयोग करने के बाद ही पहले एक से किया जाता है अगली छवि लोड हो रहा है शुरू करने के लिए किया जाएगा। यहां एक साधारण उदाहरण है जिसे मैंने एक साथ रखा है।
संपादित करें: यह एक ढेर अतिप्रवाह त्रुटियों, नीचे नया संस्करण देखने के कारण बनता है।
var preLoadImages = function(imageList, callback) {
var count = 0;
var loadNext = function(){
var pic = new Image();
pic.onload = function(){
count++;
if(count >= imageList.length){
callback();
}
else{
loadNext();
}
}
pic.src = imageList[count];
}
loadNext();
};
$(document).ready(function(){
var files = ['file1,jpg', 'file2.jpg'];
preLoadImages(files, function(){ alert("Done!"); });
});
फिर, यहां महत्वपूर्ण बात यह है कि आप केवल एक समय में एक छवि डाउनलोड करने के लिए ब्राउज़र के लिए मजबूर कर रहे हैं बनाने के लिए है। इससे भी अधिक और आप ब्राउज़र समाप्त होने तक ब्राउज़र को लॉक करने का जोखिम उठाते हैं।
-
संपादित करें: नया संस्करण बिना प्रत्यावर्तन। मैंने इसे 1000+ आइटम सरणी के साथ परीक्षण किया और किसी भी त्रुटि का सामना नहीं किया। मेरा विचार एक अंतराल और एक बुलियन के साथ रिकर्सन को प्रतिस्थापित करना था; हर 50 मिलीसेकंड, हम समारोह को मतदान करते हैं और पूछते हैं "कुछ भी लोड हो रहा है?" अगर उत्तर नहीं है, तो हम आगे बढ़ेंगे और अगली छवि कतारबद्ध करेंगे। यह सब खत्म होने तक बार-बार दोहराता है।
var preLoadImages = function(imageList, callback) {
var count = 0;
var loading = false;
var loadNext = function(){
if(!loading){
loading = true;
count++;
pic = new Image();
pic.onload = function(){
loading = false;
if(count >= imageList.length-1){
clearInterval(loadInterval);
callback();
}
}
pic.src = imageList[count];
}
}
var loadInterval = window.setInterval(loadNext, 50);
};
मैं अभी भी उत्सुक हूं कि यह कैसे करेगा, प्रदर्शन के अनुसार, एक पूर्ण वेबपृष्ठ पर, कई अन्य सामान चल रहा है। आईये जानते हैं कि यह कैसा रहेगा।
स्रोत
2010-06-15 03:56:00
डुप्लिकेट: http://stackoverflow.com/questions/476679/preloading-images-with-jquery?rq=1 –