javascript - 如何在 YouTube 视频结束时生成警报(不自动播放)

标签 javascript jquery video youtube

我正在使用 Youtube API 来生成视频,使用以下示例:

HTML:

<div id="player"></div>

Javascript:

<script src="http://www.youtube.com/player_api"></script>

<script>

    // create youtube player
    var player;
    function onYouTubePlayerAPIReady() {
        player = new YT.Player('player', {
          height: '390',
          width: '640',
          videoId: '0Bmhjf0rKe8',
          events: {
            onReady: onPlayerReady,
            onStateChange: onPlayerStateChange
          }
        });
    }

    // autoplay video
    function onPlayerReady(event) {
    }

    // when video ends
    function onPlayerStateChange(event) {        
        if(event.data === 0) {          
            alert('done');
        }
    }

</script>

此代码基于以下问题:

How to detect when a youtube video finishes playing?

唯一的区别是我删除了“onPlayerReady”函数,因为我不希望自动播放该视频。因此,我希望使用以下 Javascript 通过外部链接播放该视频:

$(document).ready(function() {

  $('#play-video').on('click', function(ev) {

   $("#player")[0].src += "&autoplay=1";
   ev.preventDefault();

  });

});

以及以下 HTML 代码:

<a id="play-video" href="#">Play Video</a>

执行后,单击链接即可播放视频。但是,在视频结束时,应该会弹出一个警报,通知视频已结束。

仅当视频是通过视频中心的默认 Youtube 播放按钮播放时才会显示此警报。但是,如果通过“播放视频”链接播放,则不会显示警报。

你知道我可能会错过什么吗?

谢谢!

最佳答案

要检查视频是否已播放完毕,您可以执行以下操作。

player.addEventListener("onStateChange", function(state){
    if(state === 0){
        // video has finished playing
    }
});

关于javascript - 如何在 YouTube 视频结束时生成警报(不自动播放),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43600931/

相关文章:

javascript - 仅使用 React hooks 的功能齐全的倒计时器

javascript - 如何在执行第一个函数后调用第二个函数?

javascript - 三个 JS 将模型旋转到 xyz 位置

javascript - 如何创建内容平滑过渡

php - Laravel 媒体存储最佳实践

video - 丢弃数据包而不是导致 DTS 错误

javascript - 对于文件夹输入,Reactjs 不接受 "webkitdirectory directory"作为输入的属性

javascript - 如何在网页中居中浏览器屏幕?

Javascript Paypal slider 字符串后缀

ios - Safari 检测视频何时播放完毕