当使用Youtube IFrame API时,getPlaylist返回一个只有一个视频的数组
getPlaylist returns an array with only one video when using the Youtube IFrame API
我正在尝试制作一个网页,加载给定的Youtube播放列表并从中播放随机视频。
当我运行时,我很难从API获取播放列表信息
player.getPlaylist()
API每次返回一个元素(当前提示的视频(的数组,而不管提示的视频或播放列表。我的JavaScript几乎是API文档的100%复制/粘贴,我不知道为什么我不能在播放列表中获得完整的视频列表。
<script>
var tag = document.createElement('script');
tag.src = "https://www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode
.insertBefore(tag, firstScriptTag);
var player;
function onYouTubeIframeAPIReady() {
player = new YT.Player('player', {
height: '390',
width: '640',
playerVars: {
listType: 'playlist',
list: 'PLbIZ6k-SE9SiarIg09JXUdK2kDX5_OB25',
autoplay: 0,
controls: 1
},
events: {
'onReady': onPlayerReady,
'onStateChange': onPlayerStateChange
}
});
}
function onPlayerReady(event) {
console.log(event.target.getPlaylist());
}
var done = false;
function onPlayerStateChange(event) {
if (event.data == YT.PlayerState.ENDED && !done) {
done = true;
console.log('Video Finished');
stopVideo();
}
}
function stopVideo() {
player.stopVideo();
}
</script>
有人能伸出援手,指出我的错误或正确的方向吗?
以这种方式加载时,播放列表似乎并没有实际提示,而只是第一个视频。这通过getPlaylist()
仅返回一个视频和onStateChange
事件在玩家加载后不触发来确认。
然而,我们可以强制播放器使用cuePlaylist()
提示播放列表。下面描述的内容可以在这个JSFiddle中看到。
我们修改构造函数以不加载任何内容:
playerVars: {
autoplay: 0,
controls: 1
},
我们修改onPlayerReady()
以提示播放列表:
function onPlayerReady(event) {
event.target.cuePlaylist({
listType: 'playlist',
list: 'PLbIZ6k-SE9SiarIg09JXUdK2kDX5_OB25',
});
}
我们修改onPlayerStateChange()
以检查CUED
的状态,并在其启动时获取播放列表:
function onPlayerStateChange(event) {
if (event.data == YT.PlayerState.CUED) {
console.log(event.target.getPlaylist());
}
if (event.data == YT.PlayerState.ENDED && !done) {
done = true;
console.log('Video Finished');
stopVideo();
}
}
之后控制台输出:
Array [ "j_OyHUqIIOU", "PK8dsAeMmPk", "lfvceHUBWnU", "Xz5z1hBxejg",
"OubvTOHWTms", "5WKU7gG_ApU", "XjwO9InuFJk", "lNqChN3WHh8" ]
相关文章:
- 是否有一个JS/jQuery函数可以获取某个类的每个元素的ID
- 如何在只能有一个asp.net表单的主页上从asp.net页面中的javascript中获取值
- 有可能在来自链接的警报中有一个值吗
- 是否<asp:文本框>有一个onFocusLost事件
- 让谷歌数据图表有一个24小时x轴
- PayPal按钮是否有一个简单的选项,其中金额基于一些用户输入
- 我确实有一个表单,如果用户输入了输入,它应该检查否定或空的输入框,并抛出一条警告消息
- 在这个使用hasOwnProperty的对象扩展程序中有一个错误,I'我不确定那个bug是什么,也不确定这个扩展
- 当知道同一hiearch中至少有一个元素时,遍历到元素.结构使用jquery
- PNG图像被覆盖,但每个图像都有一个链接可以更改,每次一个-Javascript/jQuery/CSS
- JQuery是否有一个“;移动“;作用或者有没有一种更紧凑的方法来做到这一点
- Regex或javascript每X个连续单词中有一个单词
- Jquery时间启动计时器,我有一个计时器的代码,但它在页面加载时启动
- 是否有一个javascript库来解析简单的查询
- D3.js:将一个有响应的饼图放在其父分区的中心
- 在一个函数中,我有一个未捕获的语法错误:意外的标记else
- 检查一个元素是否有一个类与另一个类总是返回true
- 我有一个用幻灯片制作的网页,但幻灯片会在屏幕上移动
- 我制作html网站的一小部分——我有一个javascript部分
- 为什么一个有一个文本INPUT的FORM在输入时提交,而一个有两个文本INPUTs的FORM则不提交