api - Youtube iframe API出现问题

标签 api audio iframe youtube

我目前有一个博客,当您使用youtube iframe加载页面时会播放背景音乐:

<iframe id="background-music" width="0" height="0" src="https://www.youtube.com/embed/VOR8reYWvx8?rel=1&autoplay=1&enablejsapi=1" xframeborder="0" allowfullscreen></iframe>

我也手动导入了youtube iframe API:
<script src="http://url_to_script/iframe_api.js"></script>

我的博客上还有其他歌曲,每当我在其中播放其他歌曲之一时,我都想暂停背景歌曲。按照https://developers.google.com/youtube/iframe_api_reference#Examples上的说明,我有以下代码,但它根本不起作用。
$(".tumblr_audio_player").contents().find('.play_button').click(function() 
                console.debug(YT);

                player = new YT.player("background-music", {
                    events: {
                      'onReady': function() { console.log("player is ready") },
                      'onStateChange': function() { console.log("player has changed state"); }
                    }
                });
                player.stopVideo();

我不确定自己在做什么错。我不知道是否需要onReady和onStateChange(我不需要它们),但是如果没有第二个对象参数,它就无法工作,因此我不确定该怎么做。

最佳答案

好吧,我知道发生了什么事。该代码大部分是正确的,但是,初始化YT.Player对象需要花费时间,而这正是onReady回调的目的。

它可以确保在执行任何操作之前初始化YT对象。如果将pauseVideo放在onReady回调中,它将正常工作。因此,要回答我的原始问题,onReady绝对必要:

player = new YT.Player("background-music", 
{   events: {
        onReady: function() {
            player.stopVideo();
        }
    }
});

关于api - Youtube iframe API出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39546372/

相关文章:

api - 在 Telegram API 中获取具有聊天链接的 chat_id

javascript - 在 axios 中发送带有 body 的 POST 请求

javascript - 将 IFrame 滚动到顶部在 Chrome 中不起作用

javascript - 将搜索重定向到 Google Search Appliance 结果页面

java - 我如何在 APK 文件中保护此 API

php - 如何从零开始让 LinkedIn API 与 PHP 一起工作

javascript - 如何在JS中剪切音频mp3 Blob

linux - 如何配置不同的 ALSA 默认值以通过一台设备捕获并通过另一台设备播放?

php - 我如何使用验证码和音频进行人工验证?

Javascript:我可以访问隐藏 iframe 中加载的文件的源吗