0

私は以前にこの状況に何度か遭遇し、それを機能させるためのトリッキーな方法を常に見つけましたが、そのためのベストプラクティスがあるかどうかを知りたいです:ページの例でいくつかのjavascript SDKを使用する必要がある場合があります:Google jsapiとjQuery。

SDKを使用する準備ができたら、Googleはこの関数を呼び出します。

google.setOnLoadCallback(MyFunction);

jQueryはこのコールバックですべてを行います:

document.ready();

Googleのコールバック後にjQueryを使用してDOMを操作したい場合はどうなりますか。ブラウザに伝える最良の方法は何ですか:「jQueryとGoogleの準備が整うのを待って、処理を実行してください...」jQueryコールバックをgoogleコールバック内にネストするのが最善ですか?またはその逆ですか?私は少し混乱しています。ありがとう!

4

2 に答える 2

0

RequireJSのようなAMDツールを使用することをお勧めします。RequireJSはJavaScriptファイルおよびモジュールローダーであり、依存関係の管理に非常に適しています。特定のケース(従来の/レガシーの「ブラウザグローバル」スクリプトを使用)では、ShimConfigを追加で使用する必要があります

最初はAMDの使用には少し注意が必要ですが、慣れると大きなメリットがあります。コードの速度と品質が向上します。

于 2012-08-13T17:52:54.290 に答える
0

これはさまざまな方法で実行できます。その1つは、グローバル変数を使用することです。

var googleLoaded = false;

google.setOnLoadCallback(function(){
   googleLoaded = true;
   mainCallback();
});

document.ready(mainCallback);

function mainCallback(){ 
  if(googleLoaded){
    ...
    ...
  }
}

一般的な解決策として、以下のように行うことができます

var jsLibsToLoad = 5;

jsLib1.onLoad(mainCallback);
jsLib2.onLoad(mainCallback);
jsLib3.onLoad(mainCallback);
jsLib4.onLoad(mainCallback);
jsLib5.onLoad(mainCallback);

function mainCallback(){ 
  if(!(--jsLibsToLoad)){
    ...
    ...
  }
}
于 2012-08-13T17:37:51.113 に答える