2010-07-12 20 views
5

मेरी सीएमएस परियोजना में स्टाइलिश वेब 2.0 लॉगिन स्क्रीन है जो जावास्क्रिप्ट का उपयोग कर स्क्रीन पर फीका है। यह कैसे आ रहा है कि भले ही मैंने 120% सुनिश्चित किया है कि छवियों को प्रीलोड किया गया है (मैंने विकास उपकरण में संसाधन मॉनीटर का उपयोग किया है) फिर भी जब मेरी लॉगिन स्क्रीन दिखाई देती है तो वे दिखाने के लिए एक सेकंड लेते हैं। यह पूरी तरह से उन्माद को नष्ट कर देता है! एक नज़र डालें: आप लॉगिन क्लिक करते हैंछवि प्रीलोडिंग अप्रभावी क्यों है?

http://www.dahwan.info/Melior (टूट लिंक)

, स्क्रीन एक 75% अल्फा 1px PNG छवि का उपयोग करते हुए अंधेरे को फीका करने के लिए माना जाता है। भले ही छवि प्रीलोड हो, फिर भी यह एनीमेशन पूरा होने तक दिखाई नहीं दे रहा है। हालांकि, अगर आप रद्द करें पर क्लिक करते हैं और फिर से लॉग इन करते हैं, तो एनीमेशन आसानी से और पूरी तरह से बहता है।

क्या कोई इस समस्या का हल करने के बारे में सोच सकता है? मैं इसे अपने बाकी सीएमएस 'जीयूआई के साथ भी कर रहा हूं। ऐसा लगता है कि अब तक कोई छवि प्रीलोडिंग नहीं हुई थी। आह हाँ, मैं वर्तमान में गूगल क्रोम 5.0.375.99 के लिए इस सीएमएस के विकास कर रहा हूँ, बाद में बहु ब्राउज़र संगतता जोड़ने:

जवाब

संपादित करें के लिए धन्यवाद।

+2

उस समस्या का उल्लेख करने योग्य हो सकता है जिसमें आपने समस्या देखी है। मैंने अभी इसे फ़ायरफ़ॉक्स 3.6 में आजमाया है और यह सही तरीके से काम करना प्रतीत होता है। – Jake

+0

लिंक मेरे ब्राउज़र टैब को क्रैश करता है (आईई 8 - Vista 32 बिट) – ZippyV

+1

विरोधी उत्तर के लिए खेद है, लेकिन क्या आपने एक छवि का उपयोग नहीं किया है? मैंने अतीत में सफलता के साथ jQuery टूल्स ओवरले (http://flowplayer.org/tools/demos/overlay/custom-effect.html) का उपयोग किया है। यदि आप इसे स्वयं करना चाहते हैं, तो आप केवल एक निश्चित पृष्ठभूमि आरजीबीए छवि का उपयोग करना चाहेंगे। रिकॉर्ड के लिए, स्क्रीन मेरे लिए ठीक काम करती है। –

उत्तर

2

मैं अपनी समस्या के समाधान के साथ आया हूं। मैंने अब तीन अलग-अलग कंप्यूटरों पर सही परिणामों के साथ तीन ब्राउज़रों में इसका परीक्षण किया है। संक्षेप में, जावास्क्रिप्ट में मेरी छवि प्रीलोडिंग फ़ंक्शन में, मैंने प्रत्येक छवियों को एक अदृश्य Div टैग में DOM में जोड़ा।

$('#img_preload').append($('<img />').attr('src', img.src)); 

छवियों अब पेज लोड पर डोम में जोड़ा जा रहा, और मेरे सिद्धांत मेरी लो-एंड कंप्यूटर की स्मृति में आराम कर रही है के अनुसार, वे तुरन्त प्रकट होता है जब मेरी सीएमएस उन्हें जरूरत है।

अपनी टिप्पणी के लिए धन्यवाद :)

0

यूआई थ्रेड केवल एक ही समय में एक कार्य का प्रबंधन कर सकता है - यह या तो जावास्क्रिप्ट निष्पादित करेगा या यूआई अपडेट करेगा। यदि छवि को प्रीलोड करने वाले कोड से पहले जावास्क्रिप्ट पार्सिंग/निष्पादन बहुत अधिक है, तो देरी हो सकती है।

एक और सुझाव पृष्ठ पर छवि का पता लगाने के बाद तक लॉगिन लिंक पर क्लिक करने योग्यता को अक्षम करना है।

ऐसा करने के लिए काफी स्पष्ट है:
समारोह disableBtn (एल) {
वर btn = document.getElementById (एल);
var btnId = btn.id;
btn.disabled = सत्य;
}

पुनः सक्षम करने के लिए, btn.disabled = false सेट करें (यह पता लगाने के बाद कि आपकी छवि को DOM में जोड़ा गया है)।

+0

मैंने अपनी समस्या के कारण धीरे-धीरे छवियों को लोड किया है, क्योंकि कुछ मामलों में मैं लॉगिन बटन पर क्लिक करने से पहले कई मिनटों के लिए संसाधन मॉनिटर की जांच कर रहा हूं, और यहां तक ​​कि मॉनिटर में छवियों को देख रहा हूं। लेकिन आपके उत्तर के लिए धन्यवाद – Hubro

1

तुम भी सिर्फ उन्हें एक सरणी में पहले से लोड कर सकते हैं। आपकी समस्या "कचरा संग्रह" के रूप में जानी जाने वाली चीज़ों के कारण हो सकती है। यह वह जगह है जहां ब्राउजर उन ऑब्जेक्ट्स को देखता है जो स्मृति का उपभोग कर रहे हैं जिनके पास स्क्रीन पर कोई उदाहरण नहीं है और स्मृति में किसी और चीज द्वारा संदर्भित नहीं किया जा रहा है।

यदि आप अपनी वेब आयु में छवियों को प्रीलोड करते हैं, तो उन्हें कैश में लोड किया जाना चाहिए। इसलिए, फिर भी संदर्भित होने पर उन्हें फिर से दिखाना चाहिए। हालांकि, यदि कैश की समाप्ति इन प्रकार की फ़ाइलों के लिए लंबे समय तक पर्याप्त समय तक सेट नहीं की जाती है तो छवियां भी गायब हो सकती हैं।

आपकी समस्या ब्राउज़र-विशिष्ट भी हो सकती है .... मुझे पता चला है कि प्री-लोडेड सामग्री के लिए उन्हें "एन्कोर" बनाना एक छवि सरणी में रखकर और फिर कॉल करने के लिए सरणी का उपयोग करके "एंकर" बनाना सर्वोत्तम होता है इमेज यूआरएल (यूआरआई) की बजाय छवियों की आवश्यकता होती है।

यहां एक त्वरित और गंदा लेख है जो इस विषय को शामिल करता है।

https://web.archive.org/web/1/http://articles.techrepublic%2ecom%2ecom/5100-10878_11-5214317.html

+0

छवियों को सरणी में लोड करना वह तरीका है जिसका मैं पहले से उपयोग कर रहा था। मैं इतनी छोटी जानकारी की आपूर्ति के लिए फिर से माफ़ी मांगता हूं। वैसे भी, मैंने समस्या हल कर ली है और इसके साथ जवाब दिया है :) – Hubro

+0

कूल! मुझे खुशी है कि यह अच्छी तरह से काम करता है।लेकिन, जिस तरह से आप इसे कर रहे हैं वह वास्तव में मंच (पृष्ठ) पर जगह लेगा, जबकि मेरा मंच या भौतिक उपस्थिति के किसी भी जोखिम के बिना ईथरियल प्लेन (मेमोरी) में रखेगा और सामग्री को विस्थापित करने का मौका होगा और यह करता है परिभाषित करने के लिए किसी भी सीएसएस की आवश्यकता नहीं है। – exoboy

2

इस समस्या के बारे में एक उपयोगी जानकारी:

Codemonkey समाधान काम करता है क्योंकि, एक छिपा div में छवियों डाल कर, ब्राउज़र एक के लिए स्मृति और तैयार में उन छवियों को रखने के लिए div की दृश्यता में संभावित परिवर्तन। यदि उपयोगकर्ता को छिपे हुए ब्लॉक से div की दृश्यता बदलने की जरूरत है, तो इसे तुरंत किया जाना चाहिए। यही कारण है कि सभी छवियों को सरणी में लोड करना ठीक से काम नहीं करता है।

+1

अच्छी तरह से छवि निष्कर्षों को स्टोर करने के लिए एक सरणी का उपयोग करके मेरे लिए वर्षों से काम किया है। तो, कृपया टिप्पणी करने से बचने का प्रयास करें कि आप 100% निश्चित नहीं हैं .... – exoboy

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