Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/465.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 Youtube API-处理已被Youtube删除的视频_Javascript_Api_Youtube - Fatal编程技术网

Javascript Youtube API-处理已被Youtube删除的视频

Javascript Youtube API-处理已被Youtube删除的视频,javascript,api,youtube,Javascript,Api,Youtube,以下是我正在工作的网站: 如你所见,有一个歌曲列表(youtube歌曲视频)。我实现了一个功能,这样一旦播放完一首歌,列表中的下一首歌就会自动开始播放 当我试图加载的视频因版权内容被youtube删除时,我遇到了一个问题。目前,我正在通过拨打以下电话检查歌曲的状态: player.getPlayerState() 并等待状态返回0(结束)。这首歌结束后,我试着加载下一首歌。一旦那首歌加载完毕,我就调用: player.playVideo() 然而,如果那首歌被删除了,我就倒霉了。我想试着找

以下是我正在工作的网站:

如你所见,有一个歌曲列表(youtube歌曲视频)。我实现了一个功能,这样一旦播放完一首歌,列表中的下一首歌就会自动开始播放

当我试图加载的视频因版权内容被youtube删除时,我遇到了一个问题。目前,我正在通过拨打以下电话检查歌曲的状态:

player.getPlayerState()
并等待状态返回0(结束)。这首歌结束后,我试着加载下一首歌。一旦那首歌加载完毕,我就调用:

player.playVideo()
然而,如果那首歌被删除了,我就倒霉了。我想试着找到一种方法来捕捉那个事件并跳到下一首歌。但是,当我尝试播放一首已删除的歌曲时,状态并没有改变。意思是:

function onytplayerStateChange(newState) {
//do stuff
}

永远不会被执行。如何检测此事件并正确处理它?

请尝试使用OnError事件侦听器,而不是使用onStateChange。如果返回100,则表示视频已被删除或转为私有。有关OneError侦听器的官方文档,请参阅此处:

因此,您希望按照以下思路做一些事情:

ytplayer.addEventListener("onError", "onPlayerError");

function onPlayerError(errorCode) {
    if(errorCode == 100)
    {
       //play next video
    }
}
您可以通过以下步骤来处理api并确定捕获错误的最佳方法:

如果视频无效,为什么getPlayerState不立即返回0?我不确定<每次youtube视频更改状态时,都会执行code>onytplayerStateChange()。当视频无效时,它不会改变状态…不知道是什么原因。代码游乐场是非常有用的,您的解决方案可以完美地工作。享受你的赏金吧,伙计!