56

私はGoogle Ajax APIを使用しており、APIに関連するさまざまなことを行うために使用することを提案していますが、Google APIに関連しない他のJSgoogle.setOnLoadCallback()のことを行うためにjQueryも使用しています。$(document).ready()

これら 2 つのアプローチを 1 つのドキュメントに混在させても安全ですか? まだ問題は感じていませんが、規模の問題だと思います。

4

4 に答える 4

69

あなたはほとんどこれをしなければなりません:

google.setOnLoadCallback(function() {
  $(function() {
    // init my stuff
  });
});

(jQuery オブジェクト) が利用可能でないとできないので、コールバック内に移動する必要があり$(document).ready()ます。$また、コールバック内でドキュメントの準備ができているかどうかを確認することはできないため、それも行う必要がありready()ます。

于 2009-02-17T11:38:56.547 に答える
49

これを死から蘇らせて申し訳ありませんが、1)この問題に対する「答え」としてまだ出てきており、2)より良い解決策を見つけました。

google.load構成オプションのオブジェクトを取る関数には、オプションの 3 番目の引数があります。オプションの 1 つですcallbacksetOnLoadCallbackまた、別の呼び出しの必要性を取り除きます。

例えば

google.load('visualization', '1.0', {
    'packages': "charttype", 
    'callback': $jQ.proxy(me.setupChart, me)
});

そう:

<script src="https://www.google.com/jsapi"></script>
<script>
$(document).ready(function () {
    function mapsLoaded() {
        etc etc etc
    }

    google.load("maps", "2", {"callback" : mapsLoaded});
});
</script>

参照: https://developers.google.com/loader/#Dynamic

于 2012-10-04T16:25:40.287 に答える
6

JavaScript コードが HTML ドキュメント内ではなく独自の js ファイル内にある場合は、ドキュメント内でこれを行うこともできます。

<script>
        google.load("jquery", "1.7.0");
        google.load("jqueryui", "1.8.16");
        google.setOnLoadCallback(function() {
             var script = document.createElement("script");
             script.setAttribute("type", "text/javascript");
             script.setAttribute("src", "my.js");
             document.getElementsByTagName("html")[0].appendChild(script);
        });
</script>

これはmy.js、Google から他のすべてのものが読み込まれた後に読み込まれます。my.jsファイルで、次のことができます$(document).ready(...)。したがって、アプリケーション コードは、「Google によって読み込まれる」または「サーバーから直接読み込まれる」から独立しています。

于 2011-11-12T15:27:03.280 に答える