我可以从脚本中获取加载JavaScript库的位置吗?

时间:2009-11-19 23:44:47

标签: javascript dom

假设我在www.foo.com上有一个包含此代码的页面:

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

我可以在script.js中编写可以检查它是否来自bar.com的代码吗?显然document.location.href会给我foo.com。

谢谢!

4 个答案:

答案 0 :(得分: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
    }
}

答案 1 :(得分:1)

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

var loc = (new Error).fileName;

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

答案 2 :(得分:1)

如果它非常重要,您可以通过在每个脚本标记前面定义包含脚本URL的字符串来解决它:

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

然后,您可以在脚本文件中访问URL

alert("my URL is "+SCRIPT_URL);

不太优雅,但应该有效。

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

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

但这确实应该是最后的手段。

答案 3 :(得分:0)

如果你坚持的话,你可以将你的脚本包裹在一个像成人尿布的状态。

if(top.location.host==='www.bar.com'){
//the whole script goes here
}

else alert('Nyah Nyah Nyah!')