Javascript 在谷歌网站上使用谷歌API(比如在youtube.com上)
我想做什么? 我正在尝试创建一个小的javascript代码段,该代码段将在youtube的订阅页面()上的浏览器中运行,并允许将我没有看过的视频批量添加到我的“以后观看”播放列表中,这样我就可以成批和/或稍后在smartTV上尽情观看它们 我是如何做到这一点的? 我正在尝试使用谷歌Youtube数据API,并通过调用“插入”方法修改“稍后观看”播放列表 我遇到了什么问题? 为了完成以上所有工作,其中一件事就是将GoogleAPI脚本加载到页面上。这就是我看到的问题所在。当我将该脚本()加载到单独托管的HTML页面(或仅在JSFIDLE沙盒中)时,一切正常:Javascript 在谷歌网站上使用谷歌API(比如在youtube.com上),javascript,google-api,youtube-api,google-apps,youtube-data-api,Javascript,Google Api,Youtube Api,Google Apps,Youtube Data Api,我想做什么? 我正在尝试创建一个小的javascript代码段,该代码段将在youtube的订阅页面()上的浏览器中运行,并允许将我没有看过的视频批量添加到我的“以后观看”播放列表中,这样我就可以成批和/或稍后在smartTV上尽情观看它们 我是如何做到这一点的? 我正在尝试使用谷歌Youtube数据API,并通过调用“插入”方法修改“稍后观看”播放列表 我遇到了什么问题? 为了完成以上所有工作,其中一件事就是将GoogleAPI脚本加载到页面上。这就是我看到的问题所在。当我将该脚本()加载到单
<script>
function handleClientLoad() {
// Load the API client and auth2 library
gapi.load('client:auth2', initClient);
}
function initClient() {
// do nothing for now
}
</script>
<script async defer src="https://apis.google.com/js/api.js" onload="handleClientLoad()"></script>
我可以看到,当我导航到时,我的用户脚本被成功触发,但是当涉及到gapi.load()
方法时,我得到了以下错误:
未捕获类型错误:gapi.loaded_0不是函数
在cb=gapi时,加载0:1
在加载我自己的gapi实例之前,我试图检查youtube页面上的可用内容,并意识到那里已经存在gapi对象,它只有一个方法:load()。当我尝试在现有对象上调用该方法时(不尝试加载我自己的gapi脚本实例),它:
我得到的错误是:
GET net::ERR_在desktop_polymer.js(第2661行)中的某个地方中止
我看到有不同的回调(gapi.loaded_0和gapi.loaded_0)。然而,我对此一无所知
我开始觉得我不能在谷歌自己的网站上使用谷歌API(比如我的youtube)。这是正确的假设吗
也许已有一些解决方案可以实现我的目标(将未观看的视频批量添加到“以后观看”播放列表中)-如果有任何提示,我都会很感激:)原来这只是我的懒眼睛。我错过了我装载两次的事实。一次是通过@require external dependency(tampermonkey脚本的功能),另一次是通过动态地将相同的脚本添加到页面中,就像我开始使用Google API时所做的那样
仅仅通过@require加载并不能真正起作用,因为这不会触发正确实例化所有内容所必需的回调。因此,我不得不删除该指令,只依赖于动态地向页面添加脚本。在我做了那件事之后,一切都开始起作用了。所以,总而言之,我发布的有问题的代码实际上是可以使用的,问题只是我如何在tampermonkey用户脚本中使用它:)谢谢分享。你有问题吗?StackOverflow是一个问答网站,您无法提问。请清楚地指出您的具体编码问题,在一个示例中展示您现有的代码,并添加一些上下文以帮助澄清您的意图。我建议您参考有关的帮助文章,并选择。我在键入问题之前单击了enter。现在编辑它。希望您可以从中删除“-1”,这样它就会出现在搜索结果中。
function loadScript(url, callback)
{
console.log('load script: ' + url);
// Adding the script tag to the body
var body = document.getElementsByTagName('body')[0];
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = url;
script.async = true;
script.defer = true;
// Then bind the event to the callback function.
script.onreadystatechange = function() {
console.log('in readyStateChange. readyState: ' + this.readyState);
callback();
};
script.onload = function() {
console.log('in onload');
this.onload = function() {};
callback();
};
// Fire the loading
body.appendChild(script);
}
function initGAPI() {
console.log('initGAPI');
gapi.load('client:auth2', initClient);
}
function initClient() {
// do nothing for now
}
loadScript('https://apis.google.com/js/api.js', initGAPI);
gapi.load('client:auth2', function() {console.log('gapi loaded');})