2012-11-07 23 views
31

मेरे पास main.js नामक एक जावास्क्रिप्ट फ़ाइल है।वर्तमान जावास्क्रिप्ट फ़ाइल नाम का पूर्ण पथ कैसे प्राप्त करें

http://server/app/main.js 

http://server/app/script/main.js 

सबसे तेज़ तरीका निरपेक्ष पथ प्राप्त करने के लिए क्या है:

main.js मैं इस वर्तमान फ़ाइल का निरपेक्ष पथ, की तरह कुछ प्राप्त करना चाहते हैं अंदर

?

उत्तर

37

आपको कम से स्क्रिप्ट संग्रह की जांच कर सकते हैं:

var scripts = document.getElementsByTagName("script"); 

लौटे scripts सरणी में प्रत्येक तत्व आप अपने src विशेषता का उपयोग कर सकते है।

वर्तमान में निष्पादित फ़ाइल में फ़ाइल scripts सरणी में हमेशा अंतिम होगी। तो आप इसे scripts[scripts.length-1] पर एक्सेस कर सकते हैं।

बेशक यह केवल प्रारंभिक कोड चलाने के समय काम करेगा और उदाहरण के लिए उपयोगी नहीं होगा, जिसे प्रारंभिक स्क्रिप्ट लोड होने के बाद बुलाया जाता है, इसलिए यदि आपको बाद में उपलब्ध मूल्य की आवश्यकता है, तो आपको इसे सहेजने की आवश्यकता होगी एक चर के लिए।

+0

धन्यवाद, यह है कि मैं क्या – hguser

+0

चाहते हैं कि उसे काम करेगा अगर हम एक से अधिक फ़ाइलों को शामिल किया है ... तो प्रत्येक जेएस फ़ाइल कैसे अपना स्वयं का स्रोत पथ दिखाएगी .. ?? – xxbinxx

+0

यह ध्यान देने योग्य है कि आप स्क्रिप्ट प्राप्त करने के किसी अन्य माध्यम का उपयोग करना चाहते हैं जिसे आप 'स्क्रिप्ट्स' सरणी से बाहर करना चाहते हैं। मैं इस विधि का उपयोग करता हूं, लेकिन मुझे रिपोर्ट है कि फ़ायरफ़ॉक्स में हर बार (ब्लीग ...) एक और स्क्रिप्ट है जिसे मेरे तर्क ने तत्वों की सरणी पकड़ने के समय तक लोड किया है। करने के लिए स्मार्ट चीज पिछले 3 या उससे अधिक की तरह पकड़ना होगा और उस फ़ाइल के साथ ढूंढें जिसे आप ढूंढ रहे हैं। –

21

जावास्क्रिप्ट फ़ाइल

के नीचे अपनी अपाचे निर्देशिका में इस रखो की वर्तमान पथ नाम प्राप्त करें:

यदि आप वर्तमान स्क्रिप्ट के लिए देखो, जिस तरह से इस साइट में उल्लेख किया है की कोशिश/tmp और इसे test.html पर कॉल करें। url पर जाएँ

localhost/grader/test.html?blah=2#foobar 

जावास्क्रिप्ट: स्थान की विशेषताओं पर

<html> 
<script> 
    alert(location.pathname); // /tmp/test.html 
    alert(location.hostname); // localhost 
    alert(location.search); // ?blah=2 
    alert(document.URL);  // http://localhost/tmp/test.html?blah=2#foobar 
    alert(location.href);  // http://localhost/tmp/test.html?blah=2#foobar 
    alert(location.protocol); // http: 
    alert(location.host);  // localhost 
    alert(location.origin); // http://localhost 
    alert(location.hash);  // #foobar 
</script>        
</html> 

अधिक जानकारी: http://www.w3schools.com/jsref/obj_location.asp

या यदि आप jQuery है:

<html> 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js"> 
</script> 
    $(location).attr('href');  // http://localhost/tmp/test.html?blah=2#foobar 
    $(location).attr('pathname'); // /tmp/test.html 
</script> 
</html> 
1

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

function absFileLoc(filename) { 
    var scriptElements = document.getElementsByTagName('script'); 
    for (var i = 0; i < scriptElements.length; i++) { 
    var source = scriptElements[i].src; 
    if (source.indexOf(filename) > -1) { 
     var location = source.substring(0, source.indexOf(filename)) + filename; 
     return location; 
    } 
    } 
    return false; 
} 
+0

यहां एक ऐसा फ़ंक्शन है जो सीएसएस फ़ाइलों का पूर्ण स्थान प्राप्त करता है। https://gist.github.com/jamrizzi/44bac4240057b4a89a2d918d05680e3d – jamrizzi

-2

इस प्रयास करें मैं वास्तविक जानते हैं कि यह एक पुराने सवाल है, लेकिन अभी भी क्योंकि IE अभी भी प्रदान करता है नहीं आप वर्तमान फ़ाइल नाम या निर्देशिका

location.href.split('/')[ location.href.split('/').length - 1 ];

+0

location.href वर्तमान वेब पेज का यूआरएल प्राप्त करता है, वर्तमान में जावास्क्रिप्ट फ़ाइल निष्पादित नहीं करता है। – CpnCrunch

+0

हमें वांछित भाग प्राप्त करने के लिए इसे विभाजित करने से पहले यूआरएल मिलता है। location.href.split ('/') [0]; // पहला भाग स्थान.href.split ('/') [location.href.split ('/')। लंबाई - 1]; // फ़ाइल का नाम – Amr

+0

नहीं, यह गलत है। आपको पृष्ठ का यूआरएल मिल रहा है, न कि वर्तमान जावास्क्रिप्ट फ़ाइल। यदि आप उस जावास्क्रिप्ट कोड को www.abc.com/file.js फ़ाइल में डालते हैं जो www.def.com/page.html में शामिल है, location.href www.def.com/page.html वापस कर देगा। सवाल यह पूछ रहा है कि जावास्क्रिप्ट फ़ाइल का नाम कैसे प्राप्त करें, यानी www.abc.com/file.js। – CpnCrunch

0

प्राप्त करना चाहते हैं, तो स्क्रिप्ट src।

सबसे अच्छा तरीका मुझे स्क्रिप्ट टैग एक विशिष्ट आईडी देने के लिए किया गया था:

<script id="kuvaScript" src="jscripts/kuva/kuva.min.js"></script> 

स्क्रिप्ट मैं का उपयोग के अंदर:

var thisScript = $("#kuvaScript").attr("src"); 
    var thisPath = thisScript.split('/').slice(0, -1).join('/')+'/'; 

यह src प्रारूप रखेंगे के रूप में यह है (रिश्तेदार या पूर्ण) और आईई और क्रोम में परीक्षण किया गया था।

आशा है कि यह आपको बहुत समय बचाएगा।

0

बहुत आसान

में इस रखो * .js फ़ाइल पथ प्राप्त करना चाहते हैं:

let scripts = document.getElementsByTagName('script') 
let lastScript = scripts[scripts.length -1] 
console.log('lastScript', lastScript.src) 
संबंधित मुद्दे