javascript - 如何使用 iFrame API 检测 YouTube 视频是否已被删除

标签 javascript iframe youtube youtube-api

是否可以使用 iFrame API 检测视频是否已被删除或在 YouTube 上不再可用?

以下代码将检测对 youtube iframe 的更改,但我能找到的唯一远程接近的数据点是 -3 ,这意味着未启动,但这也适用于任何工作视频。

CodePen

<iframe id="yt-iframe" width="630" height="354" src="http://www.youtube.com/embed/Rlm8YH2i9gY?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');
    }

    function onPlayerStateChange(event) {
    console.log(event.data);

    }
</script>

最佳答案

在播放视频之前,您可以通过检查视频时长来进行检测,如果视频时长为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>

关于javascript - 如何使用 iFrame API 检测 YouTube 视频是否已被删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47128674/

相关文章:

javascript - 增加/减少滚动变量

javascript - 我怎样才能渲染一个红色的盒子?

javascript - 使用perl从html文件中的iframe标签加载数据

Javascript 无法在来自 Ace Editor 的源代码的 iframe 上运行

html - 带有 iframe 的嵌入式网站中的 iOS 滚动问题

ruby-on-rails - youtube_it 在更新到 Ruby 2 后抛出 ArgumentError - 如何修复?

javascript - AJax 删除在某些浏览器中不起作用

javascript - Angular 2/4/5(不是 AngularJS):- how can I take . offset().top 元素?

javascript - 播放时获取 youtube 视频的当前时间

objective-c - 检测 UIWebView 完成以在 iPad 上播放 youtube 视频