2009-11-19 21 views
1

可以说我有一个页面,这个代码就可以在www.foo.com:可以从脚本中获取从哪里加载JavaScript库的位置?

<script src="http://www.bar.com/script.js" /> 

我能写代码的script.js中,可以检查它从bar.com服务?显然document.location.href会给我foo.com。

谢谢!

+1

是的。看到http://stackoverflow.com/questions/984510/what-is-my-script-src-url/984656#984656 –

回答

3
var scripts = document.getElementsByTagName("script"); 

给你 页面中的所有脚本在此之后的集合,你可以阅读他们的SRC属性来找到你的目标(我希望你知道剧本是怎么称呼)

for (var i=0, limit=scripts.lenght; i< limit; i++) { 
    if (scripts[i].src.substr(<calculate your offset>) == scriptName) { 
     // Have you found your script, extract your data 
    } 
} 
+0

这不会告诉如果script.js从www.bar.com被__served__,只是src是那个。它不考虑重定向。 –

+0

尽管如此,假设这是一个很好的起点。如果您需要调查重定向,则可以使用xhttprequest进一步挖掘。 – Eineki

+0

我想这可能是最好的答案,因为我知道脚本名。看起来像我真正希望的那一点不适合客户端,但这是一个很好的解决方法。 –

1

的只有找出一个非工人脚本的位置的方法是非标准error.fileName,这是只有Firefox和Opera支持:

var loc = (new Error).fileName; 

如果脚本是一个工作线程(当然不是),那么你可以使用location对象。

1

如果它真的很重要,你可以解决它通过定义包含在每个脚本标签前的脚本URL字符串:

<script type="text/javascript">SCRIPT_URL = "http://www.bar.com/script.js"</script> 
<script src="http://www.bar.com/script.js" /> 

里面的脚本文件,那么你就可以访问网址

alert("my URL is "+SCRIPT_URL); 

不是太优雅,但应该工作。

你也可以,如果你有一个像PHP服务器端语言,不介意发送JS文件通过翻译,JS文件中做这样的事情(大性能警告!):

<script type="text/javascript">var my_url = "<? echo $_SERVER["REQUEST_URI"]; ?>"</script> 

但这真的应该是最后的选择。