Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.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 player.mute()在带有播放列表的YouTube API中不起作用_Javascript_Video_Youtube_Youtube Api - Fatal编程技术网

Javascript player.mute()在带有播放列表的YouTube API中不起作用

Javascript player.mute()在带有播放列表的YouTube API中不起作用,javascript,video,youtube,youtube-api,Javascript,Video,Youtube,Youtube Api,我想在视频播放9秒后将其静音。我测试了各种东西,包括cuePlaylist和其他东西 下面是代码- <div id="topplayer" align="center"></div> <script> jQuery(document).ready(function( $ ) { var done = false; var tag = document.createElement('script'); tag.src = "https

我想在视频播放9秒后将其静音。我测试了各种东西,包括
cuePlaylist
和其他东西

下面是代码-

<div id="topplayer" align="center"></div>

<script>
jQuery(document).ready(function( $ ) {
    var done = false;

    var tag = document.createElement('script');
    tag.src = "https://www.youtube.com/iframe_api";
    var firstScriptTag = document.getElementsByTagName('script')[0];
    firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
});

function onYouTubeIframeAPIReady() {
    topplayer = new YT.Player('topplayer', {
      height: '315',
      width: '560',
      events: {
        'onReady': onTopPlayerReady,
        'onStateChange': onTopPlayerStateChange
      }
    });
}

function onTopPlayerReady(event) {

    event.target.loadPlaylist({
        listType:'playlist',
        list: 'PL55713C70BA91BD6E',
        index: 0,
     });

    event.target.playVideo();
}

function onTopPlayerStateChange(event) {
    if (event.data == YT.PlayerState.PLAYING && !done) {
        setTimeout(muteVideo, 9000);
        done = true;
    }
}

function muteVideo() {
    topplayer.mute();
}
</script>

您的javascript中有语法错误;您将
done
变量定义为jQuery的
ready
方法中的本地变量,因此该变量对任何其他方法都不可用(您可以在运行代码时打开Chrome的开发工具来验证这一点;您将看到
onPlayerStateChange
方法抱怨没有
done
变量)

解决方案是将该变量的声明移到
ready
方法之外,如下所示:

var done = false;
jQuery(document).ready(function( $ ) {
    var tag = document.createElement('script');
    tag.src = "https://www.youtube.com/iframe_api";
    var firstScriptTag = document.getElementsByTagName('script')[0];
    firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
});

其他一切都可以保持不变。

javascript中存在语法错误;您将
done
变量定义为jQuery的
ready
方法中的本地变量,因此该变量对任何其他方法都不可用(您可以在运行代码时打开Chrome的开发工具来验证这一点;您将看到
onPlayerStateChange
方法抱怨没有
done
变量)

解决方案是将该变量的声明移到
ready
方法之外,如下所示:

var done = false;
jQuery(document).ready(function( $ ) {
    var tag = document.createElement('script');
    tag.src = "https://www.youtube.com/iframe_api";
    var firstScriptTag = document.getElementsByTagName('script')[0];
    firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
});
其他一切都可以保持不变