在js中加载js文件

时间:2011-02-07 16:57:00

标签: javascript

我有这样的代码: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

====== 我在这里错过了什么傻事吗?我已经搜索过(因此链接),但没有回答

3 个答案:

答案 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 = ...
});