如何获取javascript文件的位置(src)?

时间:2010-08-23 15:07:35

标签: javascript

javascript文件如何知道它位于何处?例如:

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

howdy.js中的代码如何了解http://mysite.com/scripts/howdy.js

编辑:澄清。我不能依赖于在DOM中搜索我的脚本标记,因为我需要在DOM准备好之前了解它。

4 个答案:

答案 0 :(得分:13)

在当前脚本执行的那一刻,它将成为DOM中的最后一个script元素,因此您可以通过以下方式获取它:

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

选中加载此examplescript

编辑:考虑到@kangax的评论,关于asyncdefer属性,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;
  }
}
​

答案 1 :(得分:1)

给这个脚本标记一个id,然后写:

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

答案 2 :(得分: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');

答案 3 :(得分: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

哪个获取DOM中的最后一个脚本。如果您的脚本在加载时正在执行,则会返回正确的元素。

将其保存到变量中,以便稍后使用的函数中使用。

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