如何获取javascript文件的位置(src)?
javascript文件如何知道它位于何处?例如:如何获取javascript文件的位置(src)?,javascript,Javascript,javascript文件如何知道它位于何处?例如: <script type="text/javascript" src="http://mysite.com/scripts/howdy.js"></script> var scripts = document.getElementsByTagName('script'), len = scripts.length, re = /howdy\.js$/, src, howdyScriptSrc;
<script type="text/javascript" src="http://mysite.com/scripts/howdy.js"></script>
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;
}
}
howdy.js
中的代码如何知道http://mysite.com/scripts/howdy.js
编辑:澄清。我不能依靠在DOM中搜索脚本标记,因为我需要在DOM准备就绪之前了解它。尝试:
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];
给这个脚本标记一个id,然后写:
var src = document.getElementById('scriptID').attributes['src'];
在执行当前脚本的时刻,将是DOM中的最后一个
script
元素,因此您可以通过以下方式获得它:
var scripts = document.getElementsByTagName('script'),
currentScriptSrc = scripts[scripts.length-1].src;
检查这个加载这个
编辑:考虑到@kangax关于async
和defer
属性的评论,IMO之前知道文件名的唯一安全方法是检查页面上的script
元素,检查其src
属性,一些库喜欢使用这种技术,例如:
<script type="text/javascript" src="http://mysite.com/scripts/howdy.js"></script>
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;
}
}
试试这个:
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');
函数getScriptSourceName(名称){
var scripts=document.getElementsByTagName('script');
对于(i=0;i-1)
返回脚本[i].src;
}
}
getScriptSourceName('howdy.js');
我很好奇,你为什么需要这些信息?可能是@tenfour的副本-howdy.js可能会从同一目录中引入其他脚本,我无法确定howdy.js将托管在哪里(测试、生产、qa、客户端主机等)。这并不可怕,但却是一项业务需求@马塞尔-是的,你是对的,这是个骗局。但我还是不说了,因为我无法用我使用的搜索词找到答案。酷,我不知道你得到了这个信息的保证。但在我尝试过的每个浏览器上,它似乎都是一致的。谢谢想想Kangax的评论,让我在这里:“扎克利特:谢谢!”是的,我完全忘记了延迟和异步属性。