我试图在我的项目中使用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 API加载。
如何加载JS排序,等待上一个JS的完成?
发布于 2012-08-27 19:49:09
您可以使用脚本的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;
};
}但是,您需要稍微修改代码,使其成为像这样的跨浏览器安全。
发布于 2012-08-27 19:31:11
只需在</body>之前使用常规脚本标记即可。
<script src="http://maps.googleapis.com/maps/api/js?key=-MY-KEY-&sensor=true&callback=initialize"></script>
<script src="http://google-maps-utility-library-v3.googlecode.com/svn/trunk/infobox/src/infobox_packed.js"></script>默认情况下,浏览器将按照脚本显示的顺序执行脚本。
https://stackoverflow.com/questions/12148279
复制相似问题