嘿所有,我一直在尝试将一个通用函数放在一起,检索网页上正在执行的JavaScript文件的绝对URL:
基本上你可以这样打电话:
getScriptName(function(url) {
console.log(url);
// http://www.example.com/myExternalJsFile.js
});
Run Code Online (Sandbox Code Playgroud)
在页面上的外部JavaScript文件中,然后可以对其执行某些操作(例如,查找<script>加载它的标记).
它几乎在我测试过的所有浏览器中都很棒(至少Firefox,Chrome,Safari,Opera v10和IE 8).
但是,它似乎在IE 6和7中失败.回调函数被执行,但检索到的名称是主HTML页面的URL,而不是JavaScript文件.继续该示例,getScriptName使用参数调用回调:http://www.example.com/index.html
所以我真正想问的是,是否有其他方法可以获取当前JavaScript文件的URL(可能是IE 6和7特定的hackery)?提前致谢!
编辑:此外,这不适用于所有情况,所以请不要推荐它:
var scripts = document.getElementsByTagName("script");
return scripts[scripts.length-1].src;
Run Code Online (Sandbox Code Playgroud)
我希望它适用于动态创建的脚本标记(可能不会放在页面的最后),也就是延迟加载.