Javascript 用youtube api加载新视频不起作用

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

所以我正在尝试制作一种youtube视频请求系统。在我的电脑上有一个名为video.txt的文件,里面有一些youtube视频的id。(每个人都有自己的行。)我的代码如下

<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。。。如果你使用我的代码,你的需求就会得到满足。您的问题是您正在编写文件的代码以及设置间隔。也许你应该编辑你的帖子并解释一下。