Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/454.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript gapi在内容脚本中未定义_Javascript_Google Chrome_Google Chrome Extension_Google Api_Google Api Client - Fatal编程技术网

Javascript gapi在内容脚本中未定义

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];

当页面按照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
库加载到内容脚本中?

您正在异步加载Google JS客户端。
然后,在它完成加载之前,尝试立即使用它。那不行


相反,您可以同步加载它(使用普通的
标记),或者仅在异步脚本加载后运行代码(例如,使用
jQuery.getScript()
)。内容脚本无法访问页面上下文中的代码,添加脚本标记会在页面上下文中注入代码。
当您在页面的JavaScript控制台中执行代码时,您就是在页面的上下文中执行代码


您可能应该为此使用。

在运行依赖于
gapi
的代码之前,客户端对象(
gapi
)已经存在。由于某些原因,在内容脚本中访问该对象时,该对象不存在。有什么想法吗?