我有这样的代码:loading js files dynamically via another js file?但它无法识别其中的对象。
即。 cCB.js的内容
cCB = {
map: {},
...
}
等
使用:
function jsinclude(file) {
var script = document.createElement('script');
script.src = file;
script.type = 'text/javascript';
script.defer = false;
document.getElementsByTagName('head').item(0).appendChild(script);
}
使用调用代码:
jsinclude('/js/cCB.js');
在我的html头部生成
<script src="/js/cCB.js" type="text/javascript"></script>
但在第一次调用该对象中的var时:
cCB.map = new google.maps.Map(document.getElementById('map'), myOptions);
我收到错误:
referenceError: can't find variable cCB
====== 我在这里错过了什么傻事吗?我已经搜索过(因此链接),但没有回答
答案 0 :(得分:0)
你应该看看LABjs。它专为动态加载脚本而设计,可以选择保留特定的订单。
答案 1 :(得分:0)
这与等待DOM准备好有关吗?即,脚本文件需要完全加载?我想我以前回忆过这个问题。您可以尝试使用计时器来测试变量是否存在,并继续运行计时器直到它完成,此时您将清除计时器。
var timer;
function checkVar() {
if(typeof cCB == "undefined") timer = setTimeout('checkVar()', 10);
else clearTimeout(timer);
}
警告:没有测试过这个。
答案 2 :(得分:0)
我强烈建议您使用RequireJS。在您的情况下,您可以使用以下命令在文件/js/cCB.js中定义cCB模块:
define({
map: {},
...
});
然后将其用作:
require([ "cCB" ], function (cCB) {
// Module cCB loaded and accessible through the cCB argument
cCB.map = ...
});