Javascript player.mute()在带有播放列表的YouTube API中不起作用
我想在视频播放9秒后将其静音。我测试了各种东西,包括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
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);
});
其他一切都可以保持不变