使用JavaScript动态加载JavaScript

使用JavaScript动态加载JavaScript,javascript,security,api,google-maps-api-3,xss,Javascript,Security,Api,Google Maps Api 3,Xss,经过一个多小时的尝试,我认为这是因为跨域策略,但我真的认为这会起作用。我也找不到很多关于它的信息。但是,这是我的问题。我有一个名为的网站,然后我包括一个第三方脚本(我写的东西)和它的at,这个脚本需要在运行之前动态加载googlemapsapi。好吧,我想这段代码可以用: function loadScript(filename,callback){ var fileref=document.createElement('script'); fileref.setAttribute("t

经过一个多小时的尝试,我认为这是因为跨域策略,但我真的认为这会起作用。我也找不到很多关于它的信息。但是,这是我的问题。我有一个名为的网站,然后我包括一个第三方脚本(我写的东西)和它的at,这个脚本需要在运行之前动态加载googlemapsapi。好吧,我想这段代码可以用:

function loadScript(filename,callback){
  var fileref=document.createElement('script');
  fileref.setAttribute("type","text/javascript");
  fileref.setAttribute("src", filename);
  fileref.onload = callback();
  if (typeof fileref!="undefined"){
    document.getElementsByTagName("head")[0].appendChild(fileref)
  }
}

loadScript('http://maps.google.com/maps/api/js?sensor=false',function(){
  console.log('done loading');
  init();
});
但我在控制台中的回答是:

api.js:408 done loading
api.js:115 test
api.js:310 Uncaught ReferenceError: google is not defined
test
”位于
init()的顶部。所以,它正在加载脚本,但似乎没有执行它。有什么想法吗?如果这是一个跨站点脚本问题,我能想到的唯一解决方法就是在我们的终端上安装一个PHP脚本,它基本上只是将头设置为文本/javascript头,然后将
echo file\u get\u contents()
设置为我们托管的
googlemaps.PHP
文件。正如我们所说的,我们将尝试这个方法,但是,如果可能的话,用纯JS实现它的方法将非常棒

另外,我还尝试添加jQuery,然后执行
getScript()
,但仍然不起作用

--更新--

看这把小提琴:

您将在控制台中看到错误:
未捕获类型错误:未定义不是函数


尽管
google
变量是全局变量。

但您只有一个小错误:

fileref.onload = callback();
这将立即调用
回调
,并将其返回值分配给
fileref.onload

应该是

fileref.onload = callback;
您还应该在设置源之前添加处理程序(以防万一)