10

私は google+ api を使用しようとしていますが、次のようにニーズに合わせてサンプル認証の例を変更する必要がありました。

<script src="https://apis.google.com/js/client.js"></script>

これの代わりに:

<script src="https://apis.google.com/js/client.js?onload=handleClientLoad"></script>

基本的に onload パラメータを削除し、すべての機能を dom Ready に配置しました。

ここに私が理解できない問題があります:

コード:

console.log(gapi);
console.log(gapi.client);

$.each(gapi, function(){

        console.log(this);

});

gapi.client.setApiKey(this.options.apiKey);

出力:

ここに画像の説明を入力

だから、私の質問は基本的に次のとおりです。

console.log(gapi) では client や auth などのサブオブジェクトがあることが示され、console.log(gapi.client) では undefined と表示されるのはなぜですか?

4

1 に答える 1

12

?onload コールバック パラメータを使用する必要があります。これは、JS クライアントが非同期でロードを終了したときに呼び出されます。dom ready で実行することにより、gapi.client が定義される前にアクセスしようとしています。/js/client.js スクリプトは gapi といくつかのヘルパー関数を定義しますが、gapi.client と gapi.auth は JS クライアントの読み込みが完了するまで定義されません。console.log(gapi) によって記録されたオブジェクトを調べると、クライアントの読み込みが完了しているため、gapi.client と gapi.auth が定義されていることがわかります。

于 2012-10-15T16:53:54.493 に答える