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>