Javascript gapi在内容脚本中未定义
当页面按照google文档加载时,我运行以下代码:Javascript gapi在内容脚本中未定义,javascript,google-chrome,google-chrome-extension,google-api,google-api-client,Javascript,Google Chrome,Google Chrome Extension,Google Api,Google Api Client,当页面按照google文档加载时,我运行以下代码: (function() { var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true; po.src = 'https://apis.google.com/js/client:plusone.js'; var s = document.getElementsByTagName('script')[0];
(function() {
var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
po.src = 'https://apis.google.com/js/client:plusone.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
})();
这是我的代码:
gapi.auth.authorize({
'client_id': 'my_client_id',
'immediate': 'false',
'response_type':'token',
'scope': 'https://www.googleapis.com/auth/userinfo.email'
}, function() {
console.log(arguments);
});
在控制台中,如果我访问
gapi
我会看到对象。但是,如果在该代码块上使用断点,gapi
是未定义的。现在,我在这里粘贴的代码是通过内容脚本加载的。如何将gapi
库加载到内容脚本中?您正在异步加载Google JS客户端。然后,在它完成加载之前,尝试立即使用它。那不行
相反,您可以同步加载它(使用普通的
标记),或者仅在异步脚本加载后运行代码(例如,使用jQuery.getScript()
)。内容脚本无法访问页面上下文中的代码,添加脚本标记会在页面上下文中注入代码。当您在页面的JavaScript控制台中执行代码时,您就是在页面的上下文中执行代码
您可能应该为此使用。在运行依赖于
gapi
的代码之前,客户端对象(gapi
)已经存在。由于某些原因,在内容脚本中访问该对象时,该对象不存在。有什么想法吗?