2012-01-19 12 views
5

जब कोई विज़िटर साइट पर आता है तो पृष्ठभूमि छवि में फीका दिख रहा है, लेकिन जब उन्हें पहले से ही उस कैश में वह छवि नहीं मिलती है। इस के साथ कुछ:कोई छवि लोड नहीं होने पर कुछ करें (jquery)

  1. जांचें कि पृष्ठभूमि छवि पहले से ही कैश में है या नहीं।
  2. यदि यह तब दिखाया जाता है।
  3. यह तो इसे छिपाने नहीं है और जब यह लोड करता है, में यह नहीं हो पाती

jQuery का उपयोग करते हुए मैं इसे छिपाने के लिए और फिर जब लोड में यह फीका कर सकते हैं:।

$("#bkg img").hide(); 

$('#bkg img').load(function() { 
$(this).fadeIn(); 
}); 

लेकिन यह कैसे क्या मैं यह सशर्त बनाता हूं इसलिए यह केवल तभी होता है जब छवि पहले से कैश नहीं है?

जब भी कोई छवि लोड हो जाती है तो फ़ोरम पर जो कुछ भी मिला है, वह ट्रिगर होता है। मैं इसे ट्रिगर करने के लिए कैसे प्राप्त कर सकता हूं क्योंकि यह लोड नहीं होता है?

किसी भी मदद के लिए धन्यवाद, Lernz

@Sima कोड that other thread से मैं निम्नलिखित के रूप में जहाँ तक यह कर दिया है के आधार पर - लेकिन यह किसी भी प्रभाव पड़ रहा होने के लिए प्रतीत नहीं होता। जैसा कि आप देख मैं कहाँ गलत जा रहा हूँ कर सकते हैं कि महान होगा:

var storage = window.localStorage; 
if (!storage.cachedElements) { 
storage.cachedElements = ""; 
} 

function logCache(source) { 
if (storage.cachedElements.indexOf(source, 0) < 0) { 
    if (storage.cachedElements != "") 
    storage.cachedElements += ";"; 
     storage.cachedElements += source; 
    } 
} 

function cached(source) { 
    return (storage.cachedElements.indexOf(source, 0) >= 0); 
} 

var plImages; 

//On DOM Ready 
$(document).ready(function() { 
    plImages = $("#fundo-1 img"); 

    //log cached images 
    plImages.bind('load', function() { 
     logCache($(this).attr("src")); 
    }); 

    //display cached images 

    plImages.each(function() { 
    var source = $(this).attr("src") 
    if (!cached(source)) { 
     $(this).hide().fadeIn(); 
    } 
    }); 

}); 

उत्तर

2

आप कोशिश कर सकते हैं:

if(!$('#bkg img')[0].complete) { 
    $('#bkg img').hide().load(function() { 
     $(this).fadeIn(); 
    }); 
} 

https://developer.mozilla.org/en/DOM/HTMLImageElement

+0

'.hide()' पहले इसे ('if' के अंदर) को न भूलें। :) –

+1

हाँ, * बस * संपादित किया गया। इसे डांग करें, लंबे दिन और सप्ताह, शुक्रवार को लाएं। – karim79

+0

वाह जो शानदार लग रहा है :) – simekadam

0
$("#bkg img").hide();  
var imgCount=$("#bkg img").length; 
$('#bkg img').load(function(){ 
    if(!--imgCount){ 
     $('#bkg img').fadeIn(); 
      // your code after load 
    } else { 
     // your code onloading time 
    } 
}); 
0

मुझे लगता है कि के रूप में आसान नहीं है जैसा कि यह दिखता है, here एक समाधान होना चाहिए ..

+0

यह उत्कृष्ट है लेकिन मुझे अपने सिर को घेरने में परेशानी हो रही है। मैं पूछना चाहता हूं कि $ ("# bkg img") window.localStorage.cachedElements के भीतर मौजूद है या नहीं? मुझे इसे जाने दो ... – Learnz

+0

ठीक है, मुझे वास्तव में यह नहीं मिल रहा है। क्या किसी के पास कोई और विचार है? – Learnz

+1

नहीं .. आपको पहले window.localStorage की जांच करनी चाहिए चाहे, आपकी स्रोत स्ट्रिंग (लिंक किए गए समाधान के अनुसार) है और फिर यदि यह वहां संग्रहीत नहीं है, तो आपको लोड ईवेंट हैंडलर को फीडइन कोड से बांधना चाहिए, अन्यथा कुछ भी नहीं करें और इसे सामान्य रूप से प्रदर्शित करने दें। वास्तव में छवि को वास्तव में संग्रहीत नहीं किया गया है, केवल लगातार जानकारी है, चाहे छवि किसी भी समय लोड हो गई हो (हम दिखाते हैं कि यदि हां, तो यह कैश में होना चाहिए ..) – simekadam

संबंधित मुद्दे