我正在动态加载Bing Map API脚本。当脚本完成加载时,我想构建我的地图。问题是Microsoft
和Microsoft.Maps
被定义,但是Microsoft.Maps.Map
不是。我意识到他们的脚本将异步加载更多脚本,但即使在等待10秒钟后添加这些额外的假设脚本,Microsoft.Maps.Map
仍然未定义。那么如何加载Map
课程?我没有看到他们的example,显式加载类。Bing地图在加载其javascript文件后未定义
使用Javascript(Prototype框架):
var script = new Element(
'script', {
type: 'text/javascript',
src: 'http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0'
}
);
script.observe(
'load',
function(event) {
console.info(Microsoft);
console.info(Microsoft.Maps);
console.info(Microsoft.Maps.Map);
}
);
document.body.appendChild(script);
控制台输出:
>>> Microsoft
Object { Maps={...}}
>>> Microsoft.Maps
Object { Globals={...}}
>>> Microsoft.Maps.Map
undefined
'onscriptload'参数修复了它。没有指定它们,它们将永远不会加载'Microsoft.Maps.Map'。我没有特别的理由给脚本添加脚本。我只是没有看到添加到身体或头部之间的任何区别。 – Pwner
其实,一位在工作中的JavaScript大师建议将脚本附加到身体上。我想现在的方法是将它们粘在本体的末尾,这样你就不会减慢页面加载速度,所以如果你将它们动态地附加到某个地方,它应该成为其余部分所在的本体。 –