2012-10-13 27 views
10

Tôi cố gắng để sử dụng google + api, và tôi đã phải sửa đổi các ví dụ mẫu xác thực để phù hợp với nhu cầu của tôi như thế này:Tại sao 'gapi.client' từ Google Plus Api chưa được xác định?

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

Thay vì điều này:

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

Về cơ bản loại bỏ các tham số onload, và đặt tất cả các chức năng trên dom đã sẵn sàng.

Đây là vấn đề mà tôi chỉ không hiểu:

Code:

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

$.each(gapi, function(){ 

     console.log(this); 

}); 

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

Output:

enter image description here

Vì vậy, câu hỏi của tôi về cơ bản là:

Tại sao tại console.log (gapi) nó cho thấy rằng nó có su b-đối tượng như khách hàng và auth, và tại console.log (gapi.client) nó nói không xác định?

Trả lời

10

Bạn phải sử dụng tham số gọi lại onload, nó được gọi khi Máy khách JS tải xong không đồng bộ. Bằng cách chạy trên dom sẵn sàng, bạn đang cố gắng truy cập gapi.client trước khi nó đã được xác định. Điều xảy ra là kịch bản /js/client.js định nghĩa gapi và một số hàm trợ giúp, nhưng gapi.client và gapi.auth không được định nghĩa cho đến khi máy khách JS đã tải xong. Khi bạn kiểm tra đối tượng được ghi lại bởi console.log (gapi), máy khách đã tải xong, vì vậy bạn thấy gapi.client và gapi.auth được định nghĩa.

Các vấn đề liên quan