मेरी स्थिति अलग थी। मैंने jquery का उपयोग कर एक div में सामग्री लोड करने के लिए एक मेनू का उपयोग किया। हेडर सेक्शन में मौजूद होने से बहुत सी स्क्रिप्ट को रोकने के लिए, मैंने फ़ाइल को लोड करने के लिए .getscript का उपयोग केवल तभी किया था जब वह लिंक कहा गया था। डुप्लिकेट को रोकने के लिए यहां आया समाधान:
सबसे पहले मैं एक फ़ंक्शन बनाता हूं जो स्क्रिप्ट को लोड करने के लिए ज़िम्मेदार था। यह मेरी साइट पर global.js फ़ाइल और global.js फ़ाइल के भाग कठिन हैडर में कोडित है है:
var loadedScripts=new Array();
function loadScriptFiles(scriptArray){
if($.isArray(scriptArray)){
$.each(scriptArray, function(intIndex, objValue){
if($.inArray(objValue, loadedScripts) < 0){
$.getScript(objValue, function(){
loadedScripts.push(objValue);
});
}
});
}
else{
if($.inArray(script, loadedScripts) < 0){
$.getScript(script, function(){
loadedScripts.push(objValue);
});
}
}
}
इस भार के दो प्रकार के, या तो एक सरणी, या एक ही स्क्रिप्ट मूल्य लेता है। यदि यह एक सरणी है, तो यह प्रत्येक तत्व के माध्यम से loops और इसे लोड करता है। यदि यह एक सरणी नहीं है, तो यह सिर्फ एक फ़ाइल लोड करेगा। आप उस भाग को एक मिनट में देखेंगे।
महत्वपूर्ण भाग: देखें कि मैंने वैश्विक क्षेत्र (फ़ंक्शन के बाहर) में एक सरणी बनाई है जिसे लोडडैंक कहा जाता है। चूंकि यह global.js फ़ाइल का हिस्सा है, यह कभी भी पुनः लोड नहीं होता है और इसे कहीं से भी बुलाया जा सकता है।
if($.inArray(objValue, loadedScripts) < 0){
jQuery inarray फ़ंक्शन क्योंकि -1 यदि मान नहीं मिला है, मैं केवल तभी जारी रखें: लेकिन हमारे प्रयोजनों के लिए, मैं बस अगर स्क्रिप्ट नाम को लोड किए जाने का उपयोग कर सरणी में पहले से ही है देखने के लिए जाँच मान 0 से कम है।कुछ और मतलब है कि मान सरणी में है।
यहां बताया गया है कि आप फ़ंक्शन को कैसे उपयोग करते हैं। इस कोड को कहीं भी रखें (मैं इसे शीर्ष पर रखता हूं) गतिशील पृष्ठ के जिसे प्ले में बुलाया जाएगा।
<script type="text/javascript">
var scriptArray=new Array();
scriptArray[0]="[REPLACE THIS WITH THE PATH TO THE JS FILE]";
scriptArray[1]="[REPLACE THIS WITH THE PATH TO THE JS FILE]";
loadScriptFiles(scriptArray);
</script>
अगर ठीक से किया है, आप इसे केवल एक बार लोड हो जाता है पर ध्यान देंगे।
क्यों आप ऐसा करना चाहते हैं? क्या आप कैशिंग के बारे में बात कर रहे हैं? या आप सशर्त मूल्यांकन के बारे में बात कर रहे हैं? – geocar
पूछने के लिए धन्यवाद। मैं ऐसा करना चाहता हूं क्योंकि मेरे ऐप में कई मॉड्यूल हैं इसलिए बोलने के लिए .. संपर्क, कार्य आदि ... जब तक आवश्यक हो, मैं सभी जेएस में लोड नहीं करना चाहता हूं। इसलिए यदि उपयोगकर्ता संपर्कों पर क्लिक करता है, तो मैं contact.js फ़ाइल लोड करना चाहता हूं, लेकिन यदि वे बाहर क्लिक करते हैं और फिर संपर्कों पर वापस क्लिक करते हैं। मैं इसे रिलायोड नहीं करना चाहता हूं। ? – AnApprentice
आपका ब्राउज़र कैशिंग के कारण पहले से ही ऐसा करेगा। – geocar