我正在开发JavaScript API服务。主html页面如下所示:
<html>
<head>
<script type="text/javascript" src="scripts/logic.js"></script>
<script type="text/javascript" src="scripts/jquery-1..."></script>
<script type="text/javascript" src="http://mydomain/api/main.js"></script>
</head>
...
</html>
在main.js脚本中,我从mydomain加载另一个脚本。我是通过添加脚本标签([script .. src =“http://mydomain/api/getsomedata.js?callback_id = 3434&amp; someparams = ...”])来实现的。加载脚本imediatly调用API回调函数:MyApi.processCallback(...)。一切正常。
但是当我尝试从本地文件(logic.js)加载另一个mydomain脚本时,我发现非常奇怪的情况:所有脚本全局对象都是未定义的。在之前的调用中没有可见的MyApi对象或jQuery $对象。所以我无法调用MyApi回调函数。
也许是因为安全限制。反XSS,或类似的东西。我尝试添加X-XSS-Protection标头,就像在所有Google JavaScript API中一样。但它没有帮助。
我不使用IFRAMES。
问题可以完全解决,因为许多跨站点JavaScript API都在使用(Google Maps API等)同样的想法。