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

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 准备就绪事件中。

这是我不理解的问题:

代码:

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)中则显示未定义?

1个回答

12

您必须使用“onload”回调参数,当JS客户端异步加载完成时将调用它。如果在dom准备就绪时运行,您正在尝试在定义之前访问gapi.client。发生的情况是/js/client.js脚本定义了gapi和一些帮助函数,但是直到JS客户端加载完成后,gapi.client和gapi.auth才被定义。当您检查由console.log(gapi)记录的对象时,客户端已经完成加载,因此您可以看到gapi.client和gapi.auth被定义。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接