我按照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]; 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
库加载到内容脚本中?
答案 0 :(得分:3)
由于isolated context,它无效。内容脚本无法访问页面上下文中的代码,添加脚本标记会在页面上下文中注入代码 当您在页面的JavaScript控制台中执行代码时,您将在页面的上下文中执行它。
您可能应该使用identity API来实现此目的。
答案 1 :(得分:0)
您正在异步加载Google JS客户端 然后,在加载完成之前,请立即尝试使用它。那不会起作用。
相反,您可以同步加载它(使用普通的<script src="">
标记),也可以仅在加载异步脚本后运行代码(例如,使用jQuery.getScript()
)。