我正在使用Google API(gapi)進行用戶登錄。如何爲gapi添加onload事件?
我的代碼如下。它異步加載谷歌sdk。一旦它被加載,我需要調用API函數gapi.auth.authorize
(function(d: any, s: string, id: string) {
var js: HTMLScriptElement, gjs: Element = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s); js.id = id;
js.src = "https://apis.google.com/js/client.js";
gjs.parentNode.insertBefore(js, gjs);
if (js.readyState){ //IE
js.onreadystatechange = function(){
if (js.readyState == "loaded" ||
js.readyState == "complete"){
js.onreadystatechange = null;
gapi.auth.authorize(); //<-- details omitted
}
};
} else { //Others
js.onload = function(){
gapi.auth.authorize(); //<-- details omitted
};
}
}(document, 'script', 'google-jssdk'));
現在的問題是 - 我得到錯誤
TypeError: gapi.auth is undefined
應當定義嗎?我看着控制檯,然後輸入gapi.auth
,我得到一個響應的對象。
所以我認爲js.onload
事件是提前觸發,即當gapi.auth
尚未準備好。
如何解決這個問題?或者更具體地說,如何爲gapi添加onload事件?
我有同樣的問題。我在mac os上使用chrome。我正在同步加載,當我在控制檯輸入'gapi.auth'時,它仍然是'undefined',當我鍵入'gapi'時,我得到一個具有許多屬性的對象,比如'client','plus'等,但是沒有'auth'。這是否與從開發者控制檯啓用的API有關?我啓用的所有功能都是Google+ API。 – 2015-10-07 18:27:43