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) 它显示 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 回答