第一个视频结束后更改视频源

时间:2016-09-28 10:56:54

标签: javascript jquery html html5-video

我的设计中有两个视频文件。第一个是徽标揭示动画,第二个是徽标动画。我想只在每次加载页面时加载第一个视频。我想在第一个视频结束后加载第二个视频。

此处我的目标是:第一个视频在页面加载时播放(只有一次 - 每次加载页面)。如果第一个视频结束,则第二个视频将在循环中播放。我不想一次又一次地显示徽标显示(第一个)。这该怎么做。希望我能得到解决方案。

以下是我的代码。

HTML:

<video width="400" controls id="myVideo" autoplay>
  <source src="http://www.w3schools.com/html/mov_bbb.mp4" type="video/mp4">
  <source src="http://www.w3schools.com/html/mov_bbb.ogg" type="video/ogg">
  Your browser does not support HTML5 video.
</video>

JS

  document.getElementById('myVideo').addEventListener('ended',myHandler,false);
    function myHandler(e) {
        alert();
        var videoFile = 'https://static.videezy.com/system/resources/previews/000/002/165/original/Black-cat-in-green-grass.mp4';
       $(' #myVideo source').attr('src', videoFile);
       $("#myVideo")[0].load();
    }

演示:https://jsfiddle.net/jLa1s62w/

1 个答案:

答案 0 :(得分:2)

你几乎得到了它。

document.getElementById('myVideo').addEventListener('ended', myHandler, false);

function myHandler(e) {
    alert();
    var videoFile = 'https://static.videezy.com/system/resources/previews/000/002/165/original/Black-cat-in-green-grass.mp4';
    $(' #myVideo source').attr('src', videoFile);
    $('#myVideo').attr("loop", true); /* 1 */
    $("#myVideo")[0].load();
    document.getElementById('myVideo').removeEventListener('ended', myHandler, false) /* 2 */
}

1)循环属性,以便第二个视频循环。

2)删除事件监听器,以便不再替换视频。

https://jsfiddle.net/yuriy636/jLa1s62w/1/

注意:如果您使用的是jQuery,还可以使用jQuery的事件方法: $('#myVideo').on('ended',myHandler)$('#myVideo').off('ended',myHandler)