大家好,我一直在尝试组合一个通用函数,用于检索网页上正在执行的 JavaScript 文件的绝对 URL:
基本上你可以这样称呼:
getScriptName(function(url) {
console.log(url);
// http://www.example.com/myExternalJsFile.js
});
在页面上的外部 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;
我希望它在动态创建的脚本标签(可能没有放在页面的最后)的情况下工作,也就是延迟加载。