2011-09-14 18 views
8

मैं एक ऐसे प्रोजेक्ट पर काम कर रहा हूं जहां बहुत सारे jQuery चल रहे हैं। तो जब मैं पेज पर जाता हूं, तो मैं देख सकता हूं कि jQuery चल रहा है (उदाहरण के लिए $.button() पृष्ठ पर तत्व अभी भी jQueryUI लोड होने से पहले सामान्य HTML तत्व के रूप में दिखाई देते हैं: एस) तो शुरू में यह सभी बदसूरत लग रहा है, एक बार सभी जेएस लोड हो जाने पर और निष्पादित, यह "अच्छा" लग रहा है।पृष्ठ को देखने से पहले jQuery/जावास्क्रिप्ट को प्रीलोड करें और चलाएं

यह केवल छवियों को प्रीलोड करने का कोई मामला नहीं है या जो भी हो, मैं jQuery कोड को चालू करना चाहता हूं, लेकिन इसे आगंतुकों से "छुपाएं" ताकि एक बार पृष्ठ खोला जा सके, यह सीधे "अच्छा" दिखता है या एक ब्लैक स्क्रीन प्रदर्शित करता है कह रहा है कि "लोड हो रहा है ..." जब तक कि jQuery चलाना समाप्त नहीं हो जाता है।

यहां एक नज़र डालें: http://www.filamentgroup.com/, हालांकि मुझे यकीन नहीं है कि वास्तव में इसे प्रदर्शित करने से पहले साइट की जावास्क्रिप्ट चलाता है, लेकिन यह "अंधेरे स्क्रीन" कहने का मूल विचार दिखाता है "लोड हो रहा है ..." .. मुझे संदेह है कि क्या इस तरह के SlideRocket के रूप में बड़े वेब एप्लिकेशन में होता है, हालांकि यह उपयोग फ्लैश ... करता है: एस

+0

मैं व्यक्तिगत रूप से साइट छोड़ दूंगा। मैं एक पर्टी पट्टी लोडिंग छवि को देखने के लिए यहां नहीं हूं, जब तक कि मेरे पास कोई विकल्प न हो (ExtJS/Dojo API दस्तावेज़ देखें)। मैं आपको अपनी लोडिंग छवि पर आने के बजाय, अपने पृष्ठ भाग को भाग से लोड करना चाहता हूं या स्पष्ट प्रदर्शन समस्या के एक अलग समाधान के साथ आना चाहता हूं। लेकिन वह मैं हूँ। मुझे यकीन है कि कोई भी जल्द ही jQuery के तैयार किए गए टुकड़े के साथ होगा। – ZenMaster

उत्तर

4

आप सवाल अपने आप को जवाब खिड़की भार के साथ अपने सीएसएस

#everything-wrapper { 
    display : none; 
} 

में किसी से प्रदर्शन सेट और फिर। किसी प्रकार की लोडिंग स्क्रीन है जो पृष्ठ को छुपाती है जब तक कि सभी jQuery चलें।

निम्न की तरह कुछ आज़माएं।

यह आपके पेज के शीर्ष पर चला जाता है:

<div id="loadingMask" style="width: 100%; height: 100%; position: fixed; background: #fff;">Loading...</div> 

यहाँ अपने jQuery है:

$(document).ready(function() { 

    /* 
    * ... all of your jQuery ... 
    */ 

    // At the bottom of your jQuery code, put this: 
    $('#loadingMask').fadeOut(); 
}); 
+0

मुझे 30 सेकंड तक हराया! – rlemon

+0

जीनियस। एक जादू की तरह काम करता है। लघु, सटीक, और काम करता है। धन्यवाद। – meltuhamy

+0

@ मैट ब्रैडली यह मेरे लिए भी महान काम करता है धन्यवाद! लेकिन क्या आपको शायद कुछ विचार हो कि पृष्ठ लोड को दूसरे लोड में दूसरे के लिए कैसे नहीं बनाया जाए? मेरी साइट दर्ज करने का प्रयास करें: http://soulstudio.eu - आप वहां देख सकते हैं कि पहले एक पृष्ठ के लिए पूरे पृष्ठ फ़्लैश दर्ज करें। इससे कैसे बचें? – user3267302

2

लपेटें अपने jQuery के सभी कि आप चाहते हैं "प्रीलोडेड" इस में:

$(window).load(function() { 
    //Your jQuery here 
}); 

या वैकल्पिक रूप से, नहीं के सभी उस jQuery के अंदर आपका jQuery कोड। बल्कि, डाल अपने jQuery डोम एक

$(document).ready(function(){ 
    //jQuery 
})) 

में बदल जाता है और फिर अपने सभी साइट सामग्री के लिए एक आवरण है।

<div id="everything-wrapper"> 
    <!-- put your body here --> 
</div> 

और जैसे पहले

$(window).load(function() { 
    $("#everything-wrapper").show(); 
    // or 
    $("#everything-wrapper").fadeIn("fast"); 
    // to be fancy with it 
}); 
+0

क्या आपने समस्या पढ़ी? अधिकांश पृष्ठ लोड हो गया है, फिर jQuery और jQuery UI चलाता है, jQuery UI बटन और अन्य ऐसी कलाकृतियों में मानक बटन बदल रहा है। –

+0

क्या आपने मेरा समाधान पढ़ा? इसे आज़माएं और देखें कि यह काम नहीं करता है या नहीं। मैं betcha करता हूँ यह करता है। – SomeShinyObject

+0

आप समझते हैं कि मैंने टिप्पणी की थी जब वह सब तुम्हारा पहला समाधान था, है ना? –

0

मैं के माध्यम से, तो जब JQuery भार अपने स्थिर सीएसएस और HTML के हिस्से के रूप में एक ओवरले के लिए होता है

$(document).ready() आप ओवरले

0

Chr द्वारा जवाब छिपा कर सकते हैं Istopher सबसे अधिक संभावना है कि फिलामेंट समूह इसे करते हैं। आपके पास जावास्क्रिप्ट "प्रीलोडेड" हो सकता है, यह शेष पृष्ठ के साथ इनलाइन लोड करता है, और इसके कारण आमतौर पर शेष पृष्ठ की तुलना में बड़ा होने के कारण डाउनलोड करने में अधिक समय लगता है। आप पहले जावास्क्रिप्ट लोड नहीं कर सकते हैं, यह वैसे ही काम नहीं करता है।

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

0

दोस्त, मैंने आपको नमूना बनाया था। मुझे आशा है कि आपको पसंद आएगा। मैं अपनी साइट पर ऐसा कुछ उपयोग करता हूं। http://jsfiddle.net/jMVVf/

1

मुझे आईई 8 में पृष्ठ लोड के दौरान संक्षेप में एक आर्टिफैक्ट पॉप-अप के साथ एक समान समस्या थी। मैंने जिस समाधान का उपयोग किया था वह सीएसएस के लाइन 1 पर छिपाने के लिए कंटेनर की दृश्यता को बदलना था। फिर jquery फ़ाइल के अंत में तत्व दिखाया। यदि सीएसएस और jquery बहस शुरू करते हैं, तो तर्क तब तक नहीं दिखाया जाता है जब तक कि तर्क हल नहीं हो जाता है।

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