Javascript 如何检测YouTube视频是否已使用其iFrame API删除
是否可以使用iframeapi检测视频是否已被删除或在Youtube上不再可用 以下代码将检测youtube iframe的更改,但我能找到的唯一远程关闭的数据点是Javascript 如何检测YouTube视频是否已使用其iFrame API删除,javascript,iframe,youtube,youtube-api,Javascript,Iframe,Youtube,Youtube Api,是否可以使用iframeapi检测视频是否已被删除或在Youtube上不再可用 以下代码将检测youtube iframe的更改,但我能找到的唯一远程关闭的数据点是-3,这意味着未启动,但这也适用于任何工作视频 var tag=document.createElement('script'); tag.id='yt script'; tag.src=https://www.youtube.com/iframe_api'; var firstScriptTag=document.getElem
-3
,这意味着未启动,但这也适用于任何工作视频
var tag=document.createElement('script');
tag.id='yt script';
tag.src=https://www.youtube.com/iframe_api';
var firstScriptTag=document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(标记,firstScriptTag);
log(“加载的yt脚本”);
var播放器;
函数onyoutubeiframeapiredy(){
player=新的YT.player('YT-iframe'{
活动:{
“onReady”:onPlayerReady,
“onStateChange”:onPlayerStateChange
}
});
}
函数onPlayerReady(事件){
console.log(“视频播放器就绪”);
}
函数onPlayerStateChange(事件){
console.log(事件数据);
}
设置一个onError
事件处理程序并检查event.data==100
。描述了所有播放机错误事件。在播放视频之前,您可以通过检查视频的持续时间来检测,如果视频的持续时间为0
秒,则极有可能被删除/无法播放
<iframe id="yt-iframe" width="630" height="354" src="http://www.youtube.com/embed/tPEE9ZwTmy0?enablejsapi=1" frameborder="0" allowfullscreen=""></iframe>
<script type="text/javascript">
var tag = document.createElement('script');
tag.id = 'yt-script';
tag.src = 'https://www.youtube.com/iframe_api';
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
console.log('YT scripts loaded');
var player;
function onYouTubeIframeAPIReady() {
player = new YT.Player('yt-iframe', {
events: {
'onReady': onPlayerReady,
'onStateChange': onPlayerStateChange
}
});
}
function onPlayerReady(event) {
console.log('Video player ready');
if (event.target.getDuration() <= 0) {
console.log('Video likely to be removed');
}
}
function onPlayerStateChange(event) {
console.log(event.data);
}
</script>
var tag=document.createElement('script');
tag.id='yt script';
tag.src=https://www.youtube.com/iframe_api';
var firstScriptTag=document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(标记,firstScriptTag);
log(“加载的YT脚本”);
var播放器;
函数onyoutubeiframeapiredy(){
player=新的YT.player('YT-iframe'{
活动:{
“onReady”:onPlayerReady,
“onStateChange”:onPlayerStateChange
}
});
}
函数onPlayerReady(事件){
console.log(“视频播放器就绪”);
if(event.target.getDuration()不,至少不简单。我可以在onError
上添加一个事件监听器,但这只会在用户按下视频播放时触发……有没有一种方法可以在播放器加载时检测到这一点?我不这么认为,没有。当你点击播放器时,它会向YouTube本身发送一个请求,以获取视频信息。只有这样才能检测到播放器知道视频已被删除,然后让您的应用程序知道。在显示iframe之前知道这一点的唯一方法是直接使用官方的YouTube API。
<iframe id="yt-iframe" width="630" height="354" src="http://www.youtube.com/embed/tPEE9ZwTmy0?enablejsapi=1" frameborder="0" allowfullscreen=""></iframe>
<script type="text/javascript">
var tag = document.createElement('script');
tag.id = 'yt-script';
tag.src = 'https://www.youtube.com/iframe_api';
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
console.log('YT scripts loaded');
var player;
function onYouTubeIframeAPIReady() {
player = new YT.Player('yt-iframe', {
events: {
'onReady': onPlayerReady,
'onStateChange': onPlayerStateChange
}
});
}
function onPlayerReady(event) {
console.log('Video player ready');
if (event.target.getDuration() <= 0) {
console.log('Video likely to be removed');
}
}
function onPlayerStateChange(event) {
console.log(event.data);
}
</script>