我正在尝试使用 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/