Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/406.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 在谷歌网站上使用谷歌API(比如在youtube.com上)_Javascript_Google Api_Youtube Api_Google Apps_Youtube Data Api - Fatal编程技术网

Javascript 在谷歌网站上使用谷歌API(比如在youtube.com上)

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脚本加载到页面上。这就是我看到的问题所在。当我将该脚本()加载到单

我想做什么? 我正在尝试创建一个小的javascript代码段,该代码段将在youtube的订阅页面()上的浏览器中运行,并允许将我没有看过的视频批量添加到我的“以后观看”播放列表中,这样我就可以成批和/或稍后在smartTV上尽情观看它们

我是如何做到这一点的? 我正在尝试使用谷歌Youtube数据API,并通过调用“插入”方法修改“稍后观看”播放列表

我遇到了什么问题? 为了完成以上所有工作,其中一件事就是将GoogleAPI脚本加载到页面上。这就是我看到的问题所在。当我将该脚本()加载到单独托管的HTML页面(或仅在JSFIDLE沙盒中)时,一切正常:

<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');})