2011-03-18 17 views
5

में प्रदर्शित नहीं हो रही हैं, मैं कुछ छवियों को प्री-लोड कर रहा हूं और फिर उन्हें लाइटबॉक्स में उपयोग कर रहा हूं। मेरी समस्या यह है कि हालांकि छवियों को लोड किया जा रहा है, वे ब्राउज़र द्वारा प्रदर्शित नहीं किए जा रहे हैं।प्री-लोडेड छवियां क्रोम

यह समस्या क्रोम के लिए विशिष्ट है। यह क्रोम 8 - 10 के माध्यम से जारी रहा है, और मैं इस बार इसे ठीक करने के लिए चालू और बंद कर रहा हूं और कहीं भी नहीं मिला है।

मैं इन इसी तरह के सवाल पढ़ा है,
Chrome not displaying images though assets are being delivered to browser
2 Minor Crossbrowser CSS Issues. Background images not displaying in Google Chrome?
JavaScript preloaded images are getting reloaded

कौन सा सब विस्तार समान व्यवहार लेकिन क्रोम में मैक के लिए। जबकि यह विंडोज़ में हो रहा है।

  • अन्य सभी ब्राउज़र ठीक लगते हैं।
  • यदि आपके पास फ़ायरफ़ॉक्स और क्रोम खुला है, तो फ़ायरफ़ॉक्स में पृष्ठ लोड करें, और उसके बाद क्रोम में, छवियां दिखाई देंगी।
  • एक बार जब आप मैन्युअल रूप से छवियों, वेबकिट webdev उपकरण पट्टी thingy का उपयोग कर भरी हुई है, वे हमेशा ऊपर
  • सभी लिंक चित्र दिखाने के और इस तरह के ठीक है और किसी भी बनाने के लिए प्रतीत नहीं होता क्रोम से सब कुछ साफ़ करना
  • काम कर रहे हैं अंतर (कैश, इतिहास, आदि)

यदि किसी के पास कोई विचार है तो यह शानदार रूप से सहायक होगा, क्योंकि मैं सचमुच यहां विकल्पों में से सभी हूं।

पीएस, देर से जवाब देने पर माफ़ी, मैं कल एक हफ्ते के लिए छुट्टी पर हूं! : डी

अद्यतन यहां जावास्क्रिप्ट फ़ंक्शन है जो छवियों को प्रीलोड कर रहा है।

var preloaded = new Array(); 
function preload_images() { 
    for (var i = 0; i < arguments.length; i++){ 
     document.write('<'); 
     document.write('img src=\"'+arguments[i]+'\" style=\"display:none;\">'); 
    }; 
}; 

अद्यतन
मैं अभी भी इस के साथ मुद्दों कर रहा हूँ, और मैं पूरी छवियों समारोह पहले से लोड होने हटा दिया है। शायद document.write() के माध्यम से एक स्टाइल शीट देने का सबसे अच्छा तरीका नहीं है?

+0

मन? – jlindenbaum

उत्तर

5

क्रोम उन्हें पहले से लोड नहीं कर रहा है क्योंकि यह बिना किसी प्रदर्शन के डोम को लिख रहा है, इसलिए यह समझने के लिए पर्याप्त बुद्धिमान हो सकता है कि इसे प्रस्तुत करने की आवश्यकता नहीं है। ऐसा करें:

var preloaded = new Array(); 

function preload_images(){ 
    for (var x = 0; x < preload_images.arguments.length; x++) 
    { 
     preloaded[x]  = new Image(); 
     preloaded[x].src = preload_images.arguments[x]; 
    } 
} 

जावास्क्रिप्ट छवि वस्तु उपयोगी कार्यों का एक बहुत भी है जो आपके लिए उपयोगी हो सकता है:

http://www.javascriptkit.com/jsref/image.shtml

onabort()

कोड है जब उपयोगकर्ता छवि को डाउनलोड करता है तो निष्पादित किया जाता है।

onerror() एक त्रुटि छवि के लोड होने के साथ तब होता है जब

कोड निष्पादित किया जाता है (यानी: नहीं पाया जाता है)। (के) उदाहरण

ऑनलोड()

कोड निष्पादित किया जाता है जब छवि सफलतापूर्वक और पूरी तरह से डाउनलोड करता है।

और फिर आपके पास complete संपत्ति भी है जो सत्य/झूठी आपको बताती है कि छवि पूरी तरह से लोड हो चुकी है या नहीं।

+0

20 घंटों में बक्षीस जोड़ देगा :) –

+0

@ डेविड, क्या यह आपके लिए काम करता है? खुशी हुई अगर ऐसा हुआ :) –

+0

हां, ऐसा लगता है कि छवियों को जोड़ने से पहले क्रोम में प्री-लोडिंग थोड़ा अधिक जटिल है! –

2

यह पता चला है कि क्रोम HTTP कैशिंग को ध्यान में रखता है और कैशिंग गलत तरीके से समाप्त होने पर प्रीलोड के तुरंत बाद किसी प्रीलोडेड छवियों को त्याग देता है।

मेरे मामले में मैं छवियों को गतिशील रूप से उत्पन्न कर रहा हूं और डिफ़ॉल्ट रूप से प्रतिक्रिया तत्काल समाप्ति के साथ ब्राउज़र को भेजी गई थी।

इसे ठीक करने के लिए मैं नीचे निम्नलिखित स्थापित करने के लिए किया था: कुछ कोड तो हम देखते हैं आप कैसे पहले से लोड होने रहे चिपकाने

 Response.Cache.SetExpires(DateTime.Now.AddYears(1)); 
     Response.Cache.SetCacheability(HttpCacheability.Public); 

     return File(jpegStream, "image/jpeg"); 
+0

मैं PHP के माध्यम से छवियां उत्पन्न कर रहा था और मैं सोच रहा था कि Google क्रोम प्रीलोडेड छवियों को क्यों हटा रहा था। तब मुझे पता चला कि मैंने अतीत में समाप्ति तिथि निर्धारित की थी। जानकारी दोस्त के लिए धन्यवाद। – viji

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