我正在尝试使用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)上显示未定义?

最佳答案

您必须使用?onload回调参数,当JS Client完成异步加载后,将调用该参数。通过在dom就绪状态下运行,您尝试在访问gapi.client之前对其进行定义。发生的是/js/client.js脚本定义了gapi和一些辅助函数,但是直到JS客户端完成加载后才定义gapi.client和gapi.auth。当您检查由console.log(gapi)记录的对象时,客户端已完成加载,因此您会看到gapi.client和gapi.auth已定义。

关于jquery - 为什么未定义来自Google Plus Api的 'gapi.client'?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12874491/

10-11 14:39