javascript - 按顺序异步加载JS脚本(等待上一个完成)

标签 javascript html

我正在尝试使用 GoogleMaps.InfoBox在我的项目中,但在加载此脚本之前,必须加载 GoogleMaps API。

现在我有这段代码可以加载所有内容:

/**
 * Load scripts asynchronously
 */
function loadScript() {
    var script = document.createElement("script");
    script.type = "text/javascript";
    script.src = "http://maps.googleapis.com/maps/api/js?key=-MY-KEY-&sensor=true&callback=initialize";
    document.body.appendChild(script);
    var scriptInfoBox = document.createElement("script");
    scriptInfoBox.type = "text/javascript";
    scriptInfoBox.src = "http://google-maps-utility-library-v3.googlecode.com/svn/trunk/infobox/src/infobox_packed.js";
    document.body.appendChild(scriptInfoBox);
}

但 GoogleMaps API 并不总是比 GoogleMaps.InfoBox 更早加载。

如何加载已排序的 JS,等待完成前一个?

最佳答案

您可以使用脚本的 load 事件:

function loadScript(callback) {
    var script = document.createElement("script");
    script.type = "text/javascript";
    script.src = "http://maps.googleapis.com/maps/api/js?key=-MY-KEY-&sensor=true&callback=initialize";
    document.body.appendChild(script);
    script.onload = function() {
        var scriptInfoBox = document.createElement("script");
        scriptInfoBox.type = "text/javascript";
        scriptInfoBox.src = "http://google-maps-utility-library-v3.googlecode.com/svn/trunk/infobox/src/infobox_packed.js";
        document.body.appendChild(scriptInfoBox);
        scriptInfoBox.onload = callback;
    };
}

但是,您需要稍微调整一下代码才能实现 crossbrowser-safe like this .

关于javascript - 按顺序异步加载JS脚本(等待上一个完成),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12148279/

相关文章:

javascript - 如何用箭头键移动一个div

javascript - PhoneGap 安卓市场发布

html - IE 条件运算符 : OR . .. 如果大于 ie9 或者不是 IE

jquery - CSS html 下拉菜单向下移动 div

javascript - 我的变量拒绝在我的 Div 中显示

javascript - 仅从对象 javascript 数组中过滤唯一值

JavaScript 验证 : regex to validate numbers with comma

javascript - 如何在提交表单时禁用重置

javascript - jQuery - 更改单个 DIV 的 CSS

javascript - 提醒表单中未保存的更改