1

プロジェクトでGoogleMaps.InfoBoxを使用しようとしていますが、このスクリプトをロードする前に、GoogleMapsAPIをロードする必要があります。

今、私はすべてをロードするためにこのコードを持っています:

/**
 * 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);
}

ただし、GoogleMapsAPIがGoogleMaps.InfoBoxよりも前に読み込まれるとは限りません。

前のJSが完了するのを待って、ソートされたJSをロードするにはどうすればよいですか?

4

2 に答える 2

4

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-27T19:49:09.917 に答える
0

直前に通常のスクリプトタグを使用するだけ</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>

デフォルトでは、ブラウザは表示された順序でスクリプトを実行します。

于 2012-08-27T19:31:11.573 に答える