是否可以从Javascript代码中找出它来自哪里?
我需要这个来提供可以运行与文件夹无关的脚本,例如:
http://web1/service-a/script.js
http://web2/some-folder/service-b/script.js
他们的关联在:
http://web1/page1.html
http://web2/page2.html
文件script.js在两个位置都是相同的,但我希望它们能够找到它的来源,这样它就可以调用正确的Web服务方法(来自service-a的script.js应该调用service-a .method,而service.b提供的script.js应该调用service-b.method)
有没有办法在不使用任何服务器端代码的情况下找出script.js的来源?
答案 0 :(得分:2)
您可以分析包含script.js标签的html源代码,并从那里检索script.js的路径。在script.js中包含下一个函数,并使用它来检索路径。
function getPath() {
var path = null;
var scriptTags = document.getElementsByTagName("script");
for (var i = 0; i < scriptTags.length; i++) {
var scriptTagSrc = scriptTags.item(i).src;
if (scriptTagSrc && scriptTagSrc.indexOf("script.js") !== -1) {
path = scriptTagSrc;
break;
}
}
return path;
}
答案 1 :(得分:2)
嗯,这是一种黑客行为,您可以抓取文档中的所有<script>
标签,查看哪个标签具有文件的文件名,并从那里开始执行逻辑。
document.getElementsByTagName('script');
几乎就是你所需要的。其余的是基本的JS。
比循环遍历所有返回的元素(尽管这可能是最安全的)更有趣的是,我们只能查看上面调用返回的最后一个元素,因为Javascript保证必须是<script>
标记我们在解析它时(在延迟脚本除外)。所以这段代码:
var all_scripts = document.getElementsByTagName('script');
var current_script = scripts[all_scripts.length-1];
alert(current_script.src);
将警告用于包含当前Javascript文件的脚本标记的来源。