假设我在www.foo.com上有一个包含此代码的页面:
<script src="http://www.bar.com/script.js" />
我可以在script.js中编写可以检查它是否来自bar.com的代码吗?显然document.location.href会给我foo.com。
谢谢!
答案 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!')