<head>

2012-07-20 27 views
5

में स्थानीय फ़ॉलबैक के साथ सीडीएन से जावास्क्रिप्ट को कैसे लोड करें I Head JS का उपयोग अपने पृष्ठों के लिए अन्य सभी स्क्रिप्ट को गतिशील रूप से लोड करने के लिए करना चाहता हूं। मैं संस्करण CDNJS द्वारा की मेजबानी का उपयोग कर बेहतर कैशिंग का लाभ लेने के लिए योजना बना रहा हूँ,, विलंबता में कमी आई आदि<head>

मैं CDNJS कहीं भी जा रहा है सोचने के लिए कोई कारण नहीं है, लेकिन फिर भी के लिए गूगल CDN jQuery, मैं की तरह फ़ाइलों की मेजबानी की फॉलबैक शामिल करना पसंद है। जब मैं jQuery का उपयोग कर रहा हूं, तो फ़ाइलों को <body> टैग के अंत में शामिल किया गया है। हेड जेएस की प्रकृति के कारण, मुझे इसे अपने पृष्ठ के <head> में शामिल करने की आवश्यकता है।

<body> में मैं दो पंक्तियों इस तरह का प्रयोग करेंगे:

<script src="http://cdnjs.cloudflare.com/ajax/libs/headjs/0.96/head.min.js"></script> 
<script> window.head || document.write('<script src="js/libs/head-0.96.min.js"><\/script>') </script> 

मैं एक वापस आने के रूप में सिर में लाइनों की यह एक ही सेट का उपयोग कर सकते हैं? document.write() मेरे पूरे पृष्ठ को ओवरराइट नहीं करेगा? ब्राउज़र द्वारा DOM को पार्स करने के क्रम में <head> में मौजूद होने पर स्क्रिप्ट अलग-अलग लोड नहीं होते हैं?

मैं अभी भी इसके लिए बहुत नया हूं, इसलिए कोई मार्गदर्शन बहुत उपयोगी होगा! धन्यवाद!

+1

document.write केवल आपके दस्तावेज़ को नष्ट कर देता है यदि आप पेज लोड पूरा होने के बाद ऐसा करने का प्रयास करते हैं। एक इन-लाइन दस्तावेज़ .write पृष्ठ के लोड/पार्स के रूप में निष्पादित होगा और दस्तावेज़ में लिखित डेटा को बस डालें। –

+0

हां, लेकिन हेड जेएस लोड कॉल नहीं होगा जो ' आग _before_ में एक दस्तावेज़.write से स्क्रिप्ट लोड में हैं? – stevenem

+0

केवल तभी जब आपने पिछले स्क्रिप्ट टैग को 'async' के रूप में चिह्नित किया था। अन्यथा स्क्रिप्ट को तुल्यकालिक रूप से लोड किया जाता है। –

उत्तर

0

जैसा कि आप शायद पहले ही जानते हैं, आप window.jQuery के लिए परीक्षण नहीं करेंगे लेकिन कुछ फ़ंक्शन head.js. में शामिल हैं।

इसके अतिरिक्त, आप सही हैं कि आप यहां दो बार document.write() का उपयोग नहीं करना चाहेंगे।

के बजाय document.write(), इस प्रयास करें:

function appendScript(url) { 
    var head = document.getElementsByTagName('head')[0]; 
    var theScript = document.createElement('script'); 
    theScript.type = 'text/javascript'; 
    theScript.src = url; 
    theScript.onreadystatechange = callback; 
    theScript.onload = callback; 
    head.appendChild(theScript); 
} 

यूआरएल के लिए अपने स्थानीय वापस आने का उपयोग करें।

+0

jQuery भाग को इंगित करने के लिए धन्यवाद! मैं इसे एक शॉट दूंगा! हेड जेएस लोड होने के बाद 'head.js() 'कमांड चलाने के लिए कॉलबैक कैसे सेट अप करें? – stevenem

+0

मुझे यकीन नहीं है, मुझे head.js के बारे में बहुत कुछ पता नहीं है, लेकिन मुझे नहीं पता कि आप यह गारंटी दे सकते हैं कि यह डिज़ाइन द्वारा head.js के पहले या बाद में चलाएगा। –