2010-08-23 9 views
8

जावास्क्रिप्ट फ़ाइल कैसे पता चलेगा कि यह कहां स्थित है? उदाहरण के लिए:जावास्क्रिप्ट फ़ाइल का स्थान (src) कैसे प्राप्त करें?

<script type="text/javascript" src="http://mysite.com/scripts/howdy.js"></script> 

कैसे howdy.js में कोड पता कर सकते हैं http://mysite.com/scripts/howdy.js के बारे में?

संपादित करें: स्पष्टीकरण। मैं अपने स्क्रिप्ट टैग के लिए डीओएम खोजने पर भरोसा नहीं कर सकता क्योंकि मुझे डीओएम तैयार होने से पहले इसके बारे में जानना चाहिए।

+2

मैं उत्सुक हूँ, आपको इस जानकारी की आवश्यकता क्यों है? – tenfour

+0

संभावित डुप्लिकेट [मैं उस स्क्रिप्ट के भीतर से स्क्रिप्ट फ़ाइल नाम कैसे प्राप्त कर सकता हूं?] (Http://stackoverflow.com/questions/710957/how-might-i-get-the-script-filename-from-within-that -स्क्रिप्ट) –

+1

@tenfour - अन्य स्क्रिप्ट्स हैं कि howdy.js उसी निर्देशिका से कैसे खींच सकता है और मैं निश्चित नहीं हो सकता कि howdy.js होस्ट किया जाएगा (परीक्षण, प्रोड, क्यूए, क्लाइंट होस्ट, आदि)। यह कमाल नहीं है लेकिन यह एक व्यावसायिक आवश्यकता है। @ मार्सेल - हाँ, आप सही हैं, यह एक डुप्लिकेट है। लेकिन मैं इसे छोड़ दूंगा क्योंकि मुझे उस खोज शब्द के साथ वह उत्तर नहीं मिला जो मैंने उपयोग किया था। –

उत्तर

13

पल जिसमें वर्तमान स्क्रिप्ट निष्पादित किया जा रहा है, वहां डोम में पिछले script तत्व हो जाएगा, इसलिए आप प्राप्त कर सकते हैं यह द्वारा:

var scripts = document.getElementsByTagName('script'), 
    currentScriptSrc = scripts[scripts.length-1].src; 

चेक इस example कि इस script लोड करता है।

संपादित करें: विचार में @ kangax की टिप्पणी लेते हुए async और defer विशेषताओं के बारे में, केवल सुरक्षित तरीका IMO, पहले से फ़ाइल नाम जानने, पृष्ठ पर script तत्वों का निरीक्षण करने, अपने src विशेषता की जांच होगी , Scriptaculous.us जैसे कुछ पुस्तकालयों उदाहरण के लिए इस तकनीक का प्रयोग,:

var scripts = document.getElementsByTagName('script'), 
    len = scripts.length, 
    re = /howdy\.js$/, 
    src, howdyScriptSrc; 

while (len--) { 
    src = scripts[len].src; 
    if (src && src.match(re)) { 
    howdyScriptSrc = src; 
    break; 
    } 
} 
​ 
+0

कूल, आपको नहीं पता था कि आपको इस जानकारी की गारंटी थी। लेकिन यह मैंने कोशिश की हर ब्राउज़र पर लगातार लगता है। धन्यवाद! –

+1

कंगैक्स की टिप्पणी पर विचार करें जो मुझे यहां ले गया: http://twitter.com/kangax/status/22208127507 – zachleat

+1

@zachleat: धन्यवाद !, हाँ, मैं पूरी तरह से defer और async विशेषताओं को भूल गया। – CMS

0

प्रयास करें:

document.scripts[document.scripts.length-1]; // add .src to get href 
//or 
document.getElementsByTagName("script")[document.getElementsByTagName("script").length-1]; 
//for (maybe) better compatibility 

कौन सा डोम में पिछले स्क्रिप्ट हो जाता है। यदि आपकी स्क्रिप्ट को लोड होने के दौरान निष्पादित किया जा रहा है, तो यह सही तत्व वापस कर देगा।

इसे बाद में उपयोग किए जाने वाले कार्यों में उपयोग के लिए एक चर में सहेजें।

var thisScript = document.scripts[document.scripts.length-1]; 
1

इस स्क्रिप्ट टैग एक आईडी दो, और लिखें:

var src = document.getElementById('scriptID').attributes['src']; 
1

आज़माएं:

function getScriptSourceName(name){ 
    var scripts = document.getElementsByTagName('script'); 
    for (i=0;i<scripts.length;i++){ 
     if (scripts[i].src.indexOf(name) > -1) 
      return scripts[i].src; 
    } 
} 

getScriptSourceName('howdy.js'); 
संबंधित मुद्दे