html5视频"已结束"事件无法在Chrome和IE中运行

CCr*_*ler 6 javascript jquery html5-video

我在页面上有两个按钮,触发两个功能,使两个html5视频播放,隐藏和显示一些元素(包括他们自己),并在结束时调用另一个简单的功能(这导致视频转到第一帧并暂停,效果正常).

$('#rotate').click(function rotate(){

$('#rotate').hide();
$('#front_view').css('z-index','2');
$('#back_view').css('z-index','3');

//this is the video:
    $('#body_animation').trigger("play").show().bind('ended', function () {
    $('#back_view').show();
    $('#front_view').fadeOut(500);
    $(this).hide();

    this.currentTime = 0;           
    this.pause();

    });

    $('#rotate_reverse').delay(2000).fadeIn(0);
});
Run Code Online (Sandbox Code Playgroud)

这在firefox和safari中运行良好,但在chrome和IE中出现了一些奇怪的事情.页面第一次加载时,"已结束"事件似乎不起作用.但是,如果您刷新站点(或者如果您脱机运行它),它可以正常工作.

你可以在这里查看代码,我将所有网站缩小到这个问题,所以你可以更好地看到它:

http://www.hidden-workshop.com/test/

实际的视频和图像是不同的,但问题是相同的.我正试图解决这个问题,但我找不到任何答案.

提前致谢!!

Tra*_*ron 25

您的测试页不再存在,所以我无法检查,但我发现如果为标签启用循环(例如<video loop="loop">),则"已结束"事件未在Chrome或IE中触发(我没有'在Firefox中测试).删除loop属性后,两个浏览器都会触发"已结束"事件.

HTML(带有循环属性,可防止"已结束"事件表单触发):

如果您希望触发'已结束'事件,请删除循环属性...

<video id="video" loop="loop">
    <source src="whatever.mp4" width="320" height="240" type="video/mp4" />
    Your browser does not support this HTML5 video tag.
</video>
Run Code Online (Sandbox Code Playgroud)

使用Javascript:

//NOTE: This only fires if looping is disabled for the video!
$("#video").bind("ended", function() {
    alert('Video ended!');
});
Run Code Online (Sandbox Code Playgroud)

  • ^请注意,这是jQuery而不是纯Javascript (3认同)