How can a javascript file know where it is located? For example:
<script type="text/javascript" src="http://mysite.com/scripts/howdy.js"></script>
How can the code in howdy.js
know about http://mysite.com/scripts/howdy.js
?
Edit: Clarification. I cannot rely on searching the DOM for my script tag because I need to know about it before the DOM may be ready.
In the moment in which the current script is being executed, will be the last script
element in the DOM, therefore you can get it by:
var scripts = document.getElementsByTagName('script'),
currentScriptSrc = scripts[scripts.length-1].src;
Check this example that loads this script.
Edit: Taking in consideration the @kangax's comment, about the async
and defer
attributes, the only safe way IMO, previously knowing the file name, would be to inspect the script
elements on the page, examining its src
attribute, some libraries like Scriptaculous.us use this technique, for example:
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;
}
}
Give this script tag an id, and write:
var src = document.getElementById('scriptID').attributes['src'];
Try this:
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');
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With