检测脚本的位置而不是从中调用它的页面

时间:2009-06-09 14:39:24

标签: javascript

我想知道我是否能以某种方式找出脚本的位置而不是从中调用它的页面。例如如果页面是http://xxx.yyy.com/a.htm,并且我写了location.href,那么我会获得该位置而不是脚本所在的http://aaa.zzz.com/script.js。是否可以获取脚本的位置?

感谢您的时间。

3 个答案:

答案 0 :(得分:1)

简短回答:不。

答案很长:你可以遍历页面中的所有元素,计算每个元素的绝对URI,然后对你控制的服务器上的服务器端脚本发出JSON-P请求,该脚本将下载每个脚本并将其与主副本 - 但如果脚本以任何方式更改,那将会中断。使用更智能的比较算法可以实现更加强大的解决方案,但是您永远不会获得100%的可靠性(因为可能存在两个相同脚本的副本,您无法区分它们)。

答案 1 :(得分:1)

我刚才必须做同样的事情,并提出了一个稍微不同的解决方案,对我来说效果很好。您是否拥有引用脚本的页面?如果是这样,您可以在该脚本元素上放置一个id。然后在您的javascript文件中,您可以获取该元素并将其解析为域的“src”属性。

答案 2 :(得分:0)

您总是可以抓取脚本标记本身并解析出src属性。

var scripts = document.getElementsByTagName('script');
for(var i = 0; i < scripts.length; i++){
    alert(scripts[i].src); 
}