为什么来自Google Plus Api的'gapi.client'未定义?

Cri*_*ufu 10 jquery google-api

我正在尝试使用google + api,我不得不修改示例身份验证示例以满足我的需求,如下所示:

<script src="https://apis.google.com/js/client.js"></script>
Run Code Online (Sandbox Code Playgroud)

而不是这个:

<script src="https://apis.google.com/js/client.js?onload=handleClientLoad"></script>
Run Code Online (Sandbox Code Playgroud)

基本上删除了onload参数,并将所有功能放在dom上.

这是我不明白的问题:

码:

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

$.each(gapi, function(){

        console.log(this);

});

gapi.client.setApiKey(this.options.apiKey);
Run Code Online (Sandbox Code Playgroud)

输出:

在此输入图像描述

所以,我的问题主要是:

为什么在console.log(gapi)它显示它有像client和auth这样的子对象,而在console.log(gapi.client)它表示未定义?

小智 11

必须使用?onload callback参数,当JS Client异步加载完成时调用它.通过在dom上运行,你可以在定义之前尝试访问gapi.client.发生的事情是/js/client.js脚本定义了gapi和一些辅助函数,但是直到JS客户端加载完成后才定义gapi.client和gapi.auth.当您检查console.log(gapi)记录的对象时,客户端已完成加载,因此您会看到gapi.client和gapi.auth已定义.