2012-06-02 16 views
6

संभव डुप्लिकेट .js फ़ाइलें:
Dynamically Importing JavasScriptजावास्क्रिप्ट: तक पहुँचना चर, बाहरी में परिभाषित किया जाता है

वहाँ चर जहाँ से बाहरी आयातित JavaScript फ़ाइलों .js आ पहुंचने का एक तरीका है?

बाहरी .js में दायर इस प्रकार है जैसे मैं एक varialbe को परिभाषित:

// JavaScript Document 
var PETNAME = "Beauty"; 

गतिशील है कि कोड आयात करने के बाद, मैं PETNAME चर का उपयोग करना चाहते हैं, लेकिन मैं परिभाषित मूल्य नहीं मिलता है:

alert("Pet Name: " + PETNAME); 

क्या गलत हो सकता है, और बाहरी जावास्क्रिप्ट से मूल्यों को मास्टर जावास्क्रिप्ट में लाने का कोई तरीका है?

धन्यवाद।

उत्तर

10

जेएस गतिशील रूप से आयात करने के लिए, आपको onreadystatechange और load ईवेंट पर विचार करने की आवश्यकता है जो स्क्रिप्ट को ब्राउज़र द्वारा पार्स किया गया है और आपके लिए उपलब्ध है। आप इस सुविधा का उपयोग कर सकते हैं:

function getScript(url, callback) { 
    var script = document.createElement('script'); 
    script.type = 'text/javascript'; 
    script.src = url; 

    script.onreadystatechange = callback; 
    script.onload = callback; 

    document.getElementsByTagName('head')[0].appendChild(script); 
} 

और तुम इस तरह इसका इस्तेमाल कर सकते हैं:

getScript('path to your js file', function(){ 
    alert("Pet Name: " + PETNAME); 
}); 
+0

+1 - उत्तर के लिए धन्यवाद। आपको मेरी समस्या का सही स्रोत मिला है, कि मैं गतिशील रूप से .js फ़ाइल आयात करता हूं। मैं प्रस्तुत की गई सलाह का उपयोग करूंगा। चूंकि आपका उत्तर स्पष्ट है और इसके लिए कोई और अतिरिक्त आवश्यकता नहीं है, इसलिए मैं इसे अपने प्रश्न के लिए * स्वीकृत उत्तर * के रूप में चिह्नित करना चाहता हूं। –

+0

@ बंकाई.Satori: यह देखने में खुशी हुई कि यह मदद की :) – Sarfraz

2

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

+0

+1, आप अपने जवाब के लिए बहुत बहुत धन्यवाद। 'Var' को हटाकर मेरे लिए नया था। इसके अलावा, मुझे उल्लेख करना चाहिए था कि मैं गतिशील रूप से .js कोड आयात कर रहा हूं। मुझे नहीं पता था, यह जवाब के लिए महत्वपूर्ण है। धन्यवाद। –

+1

var कीवर्ड को हटाने बेहद खराब अभ्यास है, यह वैश्विक चर बनाता है और वैश्विक वातावरण को प्रदूषित करता है। – Sarfraz

+0

@ सर्फ्राज़, यह सुनिश्चित करने के लिए कोई अन्य तरीका है कि चर वैश्विक होगा? दूसरे शब्दों में, क्या 'var' को हटाने का कोई बेहतर विकल्प है? –

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