3
我試圖使用Google地球插件,並且發現它對於如何調用它更特別:如果在Javascript執行的主流之外調用(例如,通過setTimeout,例如),它只是拒絕調用負載回調。下面的例子是獨立的插圖。改變最後兩行中的哪一行被註釋掉以便看到它是否有效。google.load永遠不會調用回調
發生了什麼事?
<html>
<head>
<title>Sample</title>
<script type="text/javascript" src="https://www.google.com/jsapi"> </script>
<script type="text/javascript">
var ge;
function init() {
console.log('Initing');
function cb(instance) {
ge = instance;
ge.getWindow().setVisibility(true);
console.log('Ok');
};
function fail() {}
google.earth.createInstance('map3d', cb, fail);
}
function loadTheMap() {
google.load("earth", "1.x");
google.setOnLoadCallback(init);
console.log('Callback is set');
}
//loadTheMap(); // works
setTimeout(loadTheMap, 200); // Does not work
</script>
</head>
<body>
<div id="map3d" style="height: 400px; width: 600px;"></div>
</body>
</html>