【问题标题】:How to apply onEnded event for HTML video tag如何为 HTML 视频标签应用 onEnded 事件
【发布时间】:2023-12-08 00:01:01
【问题描述】:

我已经尝试使用 flowplayer 的视频标签。代码如下:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8/jquery.min.js">
</script>

<!-- 2. flowplayer -->
<script src="http://releases.flowplayer.org/5.4.0/flowplayer.min.js"></script>

<!-- 3. skin -->
<link rel="stylesheet" type="text/css" href="http://releases.flowplayer.org/5.4.0/skin/minimalist.css" />
<div class="player" data-engine="flash"  style="position: absolute; top: 0px; left: 0px; width: 200px; height: 150px; " >

<video preload="none" poster="images.jpeg" id="vid">
  <source type="video/webm" src="file4.webm"/>
  <source type="video/mp4" src="file2.mp4"/>
  <source type="video/ogg" src="file2.ogv"/>
</video>
</div>

 <script>
 // run script after document is ready
 $(function () {

// install flowplayer to an element with CSS class "player"
  var player=  $(".player").flowplayer({
   swf: "flowplayer-5.4.0.swf"
       });



});

player.load(function() {
    alert("player was loaded programmatically");
});
</script>

如果视频播放完毕,如何将页面重定向到http://google.com?如何触发结束事件以检测视频结束? 提前致谢!

更新

    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8/jquery.min.js"></script>

    <script src="http://releases.flowplayer.org/5.4.0/flowplayer.min.js"></script>
    <script type="text/javascript">
        // Master function, encapsulates all functions
        function init() {
            var video = document.getElementById("vid");

     video.onended = function(e) {

    alert('ok');
    // code to navigate page
    }
   }
    </script>
<script>
 $(function () {

   // install flowplayer to an element with CSS class "player"
  var player=  $(".player").flowplayer({
   swf: "flowplayer-5.4.0.swf"
       });



 });

  </script>


  <a class="player" data-engine="flash"  style="position: absolute; top: 0px; left: 0px; width: 200px; height: 150px; " >

 <video preload="none" poster="images.jpeg" id="vid">
  <source type="video/webm" src="file4.webm"/>
  <source type="video/mp4" src="file2.mp4"/>
  <source type="video/ogg" src="file2.ogv"/>
 </video>
</a>

【问题讨论】:

标签: jquery html video flowplayer


【解决方案1】:
// make a server call each time a clip starts or finishes
$f("#myPlayer").onStart(function(clip) {
    $.get("statistics.php?action=start&clip=" + clip.url);
}).onFinish(function(clip) {
    $.get("statistics.php?action=finish&clip=" + clip.url);
});

查看This了解更多信息

更新

    <script type="text/javascript">
            // Master function, encapsulates all functions
            function init() {
                var video = document.getElementById("vid");   

    video.onended = function(e) {

        alert('ok');
        // code to navigate page
        } 
}
        <script>

【讨论】:

  • 感谢您的回答。我已经如上所述更改了我的代码。但它不起作用!
  • 上面的代码是我用来在IOS播放视频的。所以没有那个div我不能播放视频。你的意思是我需要删除 div 并将 class="player" 添加到视频标签,对吗?
  • Naa.. 它应该是 标签,你需要使用 flash.flowplayer.org/documentation/api/index.html javascript api 来实现我提到的技术
  • 如果您使用的是 html5 标签,那么可能会有其他选择等待我研究一下
  • 感谢您的帮助,我已经为这个问题工作了 2 天!
【解决方案2】:

你检查过这个答案吗? HTML 5 Video OnEnded Event not Firing

您也可以尝试每隔几毫秒检查一次视频的“结束”属性 http://www.w3schools.com/tags/av_prop_ended.asp

function checkIfEnded( )
{
  myVid=document.getElementById("video1");
  //alert(myVid.ended);
  if ( !myVid.ended )
  {
    setTimeout( "checkIfEnded( )", 1000);
  }
  else
  {
    //goto google.com
  }
}

【讨论】:

  • 我已经尝试了 w3schools 的代码。但我总是变得虚假。那是因为我将 div 用于流播放器。如何将其更改为工作状态?
  • @NewPHP 刚刚检查到这里flowplayer.org/docs/api.html,请定期检查您的播放器对象的“完成”属性。