【问题标题】:make html5 video go to first frame when it ends?使html5视频结束时转到第一帧?
【发布时间】:2011-11-15 07:29:52
【问题描述】:

我有一个简单的视频 html5 标签,绑定到“结束”事件:

$('#video').show().trigger("play").bind('ended', function () { 
//code
}

由于我通过按钮单击“显示”和“隐藏”它,我想让它返回到最后一个函数的第一帧,所以它会在下一次出现时从头开始(现在它从结尾开始,从最后一帧到第一帧时会导致令人讨厌的闪烁)。

jQuery 可以做到吗?

提前致谢!

【问题讨论】:

    标签: javascript jquery html5-video


    【解决方案1】:

    你可以使用类似的东西

    $('#video').show().trigger("play").bind('ended', function () { 
        this.currentTime = 0;
    }
    

    只有在loadedmetadata事件过去后才能设置currentTime。

    【讨论】:

    • 非常感谢,确实做到了。我只需要放一个 this.pause();在 this.currentTime =0; 之后,我的代码就像一个魅力。随着截止日期越来越近,我花了几个小时试图解决这个问题,再次感谢!
    • @CCrawler,我的代码对你不起作用?编辑:无视。我误解了你的问题;)
    • @MarcusEkwall 没问题,Marcus,无论如何感谢您的回复!
    • @Niels 我只是碰巧在 Chrome 和 IE 中发现该代码存在问题,他们似乎忽略了 this.currentTime = 0;部分。我跑了一个警报('this.currentTime');在该函数内部,它返回不同于零的数字(1.67890 等)。它在 FFox 中完美运行;该值已正确设置为零,并且视频的行为符合预期。知道为什么会发生这种情况吗?您提到了有关加载元数据事件的内容,有什么方法可以确保该事件已正确通过?提前致谢!
    • loadedmetadata 是在加载视频数据时,获取最大时间和更多数据。如果您的视频已播放到最后,则此数据已准备就绪。如果你想让它循环使用$("#video")[0].loop = true;。但是这个source 告诉你应该可以使用currentTime。或者你可以试试this.play(); this.pause();
    【解决方案2】:

    这在头脑中:

    <script>
    function Reset() { document.getElementById('MyVideo').load(); }
    </script>
    

    这在视频标签中:

    <video ID="MyVideo" onended="Reset()" [plus your other parameters] >
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-08
      • 1970-01-01
      • 1970-01-01
      • 2011-02-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多