用JavaScript动态加载JavaScript
Dynamically load JavaScript with JavaScript
经过一个多小时的尝试让它工作,我认为这是因为跨域政策,但我真的认为这将工作。我也找不到很多关于它的信息。但是,这是我的问题。我有一个叫做http://mysite.com的网站,然后我包括一个第三方脚本(我写的)和它在http://supercoolsite.com/api/script.js,这个脚本需要动态加载谷歌地图api在:http://maps.google.com/maps/api/js?sensor=false之前运行。嗯,我认为这段代码可以工作:
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_get_contents()
设置为我们托管的googlemaps.php
文件。就在我们说话的时候,我正要尝试一下,但是,如果可能的话,用纯JS来做这件事会很棒。
注:我还尝试添加jQuery,然后做getScript()
,它仍然没有工作
——
看这个小提琴:http://jsfiddle.net/ycMCa/2/
你会看到在控制台中出现错误:Uncaught TypeError: undefined is not a function
尽管google
变量是全局的,
你只是有一个小错误:
fileref.onload = callback();
这将立即调用callback
,并将其返回值赋值给fileref.onload
。
应该是
fileref.onload = callback;
您还应该在设置源之前添加处理程序(以防万一)。
相关文章:
- HTML外部javascript加载另一个javascript
- 什么是谷歌地图'的javascript加载策略
- 使用javascript加载knockoutjs组件
- Javascript - 加载函数运行时未定义的变量
- 使用javascript加载并显示来自另一个域的页面,而不显示原始URL
- 使用Javascript加载页面
- Javascript加载时间过长
- 使用纯Javascript加载外部URL内容
- 如何在使用javascript加载页面时直接设置对象参数
- 每次使用 Javascript 加载页面时增加一个数字(变量)的简单方法
- 将外部 SVG 和包含 JavaScript 加载到 HTML 中
- 是否有一个 JavaScript 加载器可以将套接字的数量限制为 1 或 2
- 使用本地生成的代码通过 JavaScript 加载 IFrame
- Jquery/javascript:加载页面时不需要的重复函数
- 一段时间后使用Javascript加载网页ASP.net
- 在https网站上用javascript加载封面图片
- 如何使用cURL获取JavaScript加载的网络内容
- 如何检查是否使用javascript加载了框架?-不是加载,不是iframe
- I'我正在尝试将JavaScript加载到我的UIWebView中
- 如何用Javascript加载本地文件