我正在开发一个 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&someparams=..."])来做到这一点。加载的脚本立即调用 API 回调函数:MyApi.processCallback(...)。一切正常。
但是当我尝试从本地文件(logic.js)加载另一个 mydomain 脚本时,我收到了非常奇怪的情况:所有脚本全局对象都未定义。在之前的调用中没有可见的 MyApi 对象或 jQuery $ 对象。所以我不能调用 MyApi 回调函数。
也许是因为安全限制。Anti-XSS,或类似的东西。我尝试添加一个 X-XSS-Protection 标头,就像在所有 Google JavaScript API 中一样。但这并没有帮助。
我不使用 IFRAME。
这个问题可以完全解决,因为许多跨站点 JavaScript API(Google Maps API 等)都在同一个想法上工作。