Javascript 用youtube api加载新视频不起作用
所以我正在尝试制作一种youtube视频请求系统。在我的电脑上有一个名为video.txt的文件,里面有一些youtube视频的id。(每个人都有自己的行。)我的代码如下Javascript 用youtube api加载新视频不起作用,javascript,arrays,youtube-api,youtube-javascript-api,Javascript,Arrays,Youtube Api,Youtube Javascript Api,所以我正在尝试制作一种youtube视频请求系统。在我的电脑上有一个名为video.txt的文件,里面有一些youtube视频的id。(每个人都有自己的行。)我的代码如下 <div id="player"></div> <script src="http://www.youtube.com/player_api"></script> <script> function addToList(file) { var ge
<div id="player"></div>
<script src="http://www.youtube.com/player_api"></script>
<script>
function addToList(file)
{
var getVid = new XMLHttpRequest();
getVid.open("GET", file, false);
getVid.onreadystatechange = function ()
{
if(getVid.readyState === 4)
{
if(getVid.status === 200 || getVid.status == 0)
{
var allText = getVid.responseText;
returnText = allText.replace( /\n/g, " " ).split( " " );
vid.push.apply(vid, returnText);
console.log(vid[0]);
}
}
}
getVid.send(null);
}
//make the array
var vid = []
// create youtube player
setInterval( getVid , 500 );
var player;
function onYouTubePlayerAPIReady() {
player = new YT.Player('player', {
height: '390',
width: '640',
events: {
'onReady': onPlayerReady,
'onStateChange': onPlayerStateChange
}
});
}
// autoplay video
function onPlayerReady(event) {
player.loadVideoById({'videoId': 'qjlH7pQRK9I', 'startSeconds': 0});
event.target.playVideo();
}
// when video ends
function onPlayerStateChange(event) {
if(event.data === 0) {
addToList("video.txt");
if (vid[0] == "") {
vid.shift();
}
if (vid === undefined || vid.length == 0) {
vid.push("qjlH7pQRK9I");
player.loadVideoById({'videoId': vid[0], 'startSeconds': 0});
vid.shift();
} else {
player.cueVideoById( vid[0]);
player.playVideo();
vid.shift();
}
}
}
</script>
函数addToList(文件)
{
var getVid=newXMLHttpRequest();
打开(“获取”,文件,错误);
getVid.onreadystatechange=函数()
{
if(getVid.readyState==4)
{
如果(getVid.status==200 | | getVid.status==0)
{
var allText=getVid.responseText;
returnText=allText.replace(/\n/g,“”)。split(“”);
vid.push.apply(vid,returnText);
console.log(vid[0]);
}
}
}
getVid.send(空);
}
//制作阵列
var vid=[]
//创建youtube播放器
设置间隔(getVid,500);
var播放器;
函数onYouTubePlayerAPIReady(){
player=新的YT.player('player'{
高度:“390”,
宽度:“640”,
活动:{
“onReady”:onPlayerReady,
“onStateChange”:onPlayerStateChange
}
});
}
//自动播放视频
函数onPlayerReady(事件){
loadVideoById({'videoId':'qjlH7pQRK9I','startSeconds':0});
event.target.playVideo();
}
//视频结束时
函数onPlayerStateChange(事件){
如果(event.data==0){
addToList(“video.txt”);
如果(vid[0]=“”){
vid.shift();
}
if(vid==未定义| | vid.length==0){
视频推送(“qjlH7pQRK9I”);
loadVideoById({'videoId':vid[0],'startSeconds':0});
vid.shift();
}否则{
player.cueVideoById(vid[0]);
player.playVideo();
vid.shift();
}
}
}
哦,是的。当没有视频时,它会播放10秒的视频。它总是从这个开始。但在结束后,下一个视频应该会弹出并开始播放。。。但事实并非如此。相反,我得到了这个
但是控制台中没有错误。。。我可能在做些傻事。。。但是我想得到一些帮助那家伙在那里干什么?一定要把它去掉 我还更改了文本文件的读取位置 我想这就是我的想法 你想要什么作为第一个视频?前10秒什么都没有,还是没有
<div id="player"></div>
<script src="http://www.youtube.com/player_api"></script>
<script>
// array containing IDs of youtube videos
var vid = [];
// youtube player object
var player;
//Loads a text file with youtube IDs, pushes them to an array ( var vid )
function loadIDsFromFile(file) {
var getVid = new XMLHttpRequest();
getVid.open("GET", file, false);
getVid.onreadystatechange = function () {
if(getVid.readyState === 4) {
if(getVid.status === 200 || getVid.status == 0) {
var allText = getVid.responseText;
returnText = allText.replace( /\n/g, " " ).split( " " );
vid.push.apply(vid, returnText);
console.log(vid[0]);
}
}
}
getVid.send(null);
}
// the Youtube API is ready to use. Let's load the text file here; no point in waiting
function onYouTubePlayerAPIReady() {
loadIDsFromFile("video.txt");
player = new YT.Player('player', {
height: '390',
width: '640',
events: {
'onReady': onPlayerReady,
'onStateChange': onPlayerStateChange
}
});
}
// autoplay video
function onPlayerReady(event) {
player.loadVideoById({'videoId': 'qjlH7pQRK9I', 'startSeconds': 0});
event.target.playVideo();
}
// when video ends
function onPlayerStateChange(event) {
if(event.data === 0) { // last video stopped playing, let's load a next one and play it
if (vid === undefined || vid.length == 0 || ! vid[0] ) {
vid=["qjlH7pQRK9I"]; //default, "10 seconds of nothing" video
}
player.cueVideoById(vid[0]);
player.playVideo();
vid.shift();
}
}
</script>
//包含youtube视频ID的数组
var-vid=[];
//youtube播放器对象
var播放器;
//加载带有youtube ID的文本文件,将其推送到数组(var vid)
函数loadIDsFromFile(文件){
var getVid=newXMLHttpRequest();
打开(“获取”,文件,错误);
getVid.onreadystatechange=函数(){
if(getVid.readyState==4){
如果(getVid.status==200 | | getVid.status==0){
var allText=getVid.responseText;
returnText=allText.replace(/\n/g,“”)。split(“”);
vid.push.apply(vid,returnText);
console.log(vid[0]);
}
}
}
getVid.send(空);
}
//Youtube API已经可以使用了。让我们在这里加载文本文件;没必要再等了
函数onYouTubePlayerAPIReady(){
loadIDsFromFile(“video.txt”);
player=新的YT.player('player'{
高度:“390”,
宽度:“640”,
活动:{
“onReady”:onPlayerReady,
“onStateChange”:onPlayerStateChange
}
});
}
//自动播放视频
函数onPlayerReady(事件){
loadVideoById({'videoId':'qjlH7pQRK9I','startSeconds':0});
event.target.playVideo();
}
//视频结束时
函数onPlayerStateChange(事件){
如果(event.data==0){//上一个视频停止播放,让我们加载下一个视频并播放它
如果(vid==未定义的| | vid.length==0 | | |!vid[0]){
vid=[“qjlH7pQRK9I”];//默认为“10秒零”视频
}
player.cueVideoById(vid[0]);
player.playVideo();
vid.shift();
}
}
是的,第一个视频是10秒零。我有setintervle在那里,因为我使用一个单独的程序来编写文本文件,我让它把下一个视频的id放在文本文件中,10秒后删除它。这意味着,如果一个视频的长度超过10秒,下一个视频将不会添加到数组中,因为它将不再位于文本文件中。但在10秒之后,它仍然告诉我,我有无效的参数。我就是不知道为什么。如果我右键单击播放器并说复制视频URL,它会显示无效参数。。。它给了我正确的URL。。。如果你使用我的代码,你的需求就会得到满足。您的问题是您正在编写文件的代码以及设置间隔。也许你应该编辑你的帖子并解释一下。