使用JavaScript

时间:2015-09-25 23:22:15

标签: javascript video

我有正在播放的视频。如何在视频结束前5秒调用函数?

我想在启动视频时放一个计时器,问题是用户可以控制视频,然后停止再播放他想要的次数,这样定时器就会失效。

示例非常好!

- - - - - - - - EDIT 这是我正在使用的代码的示例:

video = document.createElement("video");
    video.setAttribute("id", id);
    video.src = url;
    video.onended = function(e) {
        var playlistName = getPlaylistName();
        findNextSongToPlay(playlistName, playNextSong);
    };

我希望最后调用“onended”事件,但是在5秒之前调用.. 所以我需要稍微改变一下......

再次,非常感谢!

3 个答案:

答案 0 :(得分:3)

以下是您的演示

  

修改:更新了演示。



window.onload=function(){
video = document.createElement("video");
    video.setAttribute("id", "Myvideo");
    video.setAttribute("controls", "controls");
    video.src = "http://www.w3schools.com/html/mov_bbb.mp4"; 
    video.addEventListener("timeupdate", myfunc,false);
    document.body.appendChild(video);  
}

function myfunc(){
	if(this.currentTime > this.duration-5){
		//Less than 5 seconds to go. Do something here.

//---- For Demo display purposes
document.getElementById('Example').innerHTML="Less than 5 seconds to go!";
//---------
	} //End Of If condition.
//---- For Demo display purposes
else{document.getElementById('Example').innerHTML="";}
//---------
}

<div id="Example"></div>
&#13;
&#13;
&#13;

由于您的播放器是动态创建的,因此您可以使用:

video = document.createElement("video");
video.setAttribute("id", id);
video.src = url;
  //Add the event Listener
  video.addEventListener("timeupdate", myfunc,false);
  video.onended = function(e) {
    var playlistName = getPlaylistName();
    findNextSongToPlay(playlistName, playNextSong);
  };

应该调用此函数

function myfunc(){
    if(this.currentTime > this.duration-5){
        //Do something here..
    }
}

如果您有任何疑问,请在下面留言,我会尽快给您回复。

我希望这会有所帮助。快乐的编码!

答案 1 :(得分:0)

使用HTML5播放器进行示例。

最多可发生100毫秒的差异,而不是恰好5秒。 但你可以调整脚本。

您可以在此处粘贴此代码以进行尝试: http://www.w3schools.com/html/tryit.asp?filename=tryhtml5_video_all

<html>
<body>
    <video id="vid" width="320" height="240" controls>
        <source src="movie.mp4" type="video/mp4">
        <source src="movie.ogg" type="video/ogg">
        Your browser does not support the video tag.
    </video>
    <script>
        var callOnce = true;

        function monitorVideo() {
            if ((vid.duration - vid.currentTime) < 5)
                if (callOnce) {
                    myFunction();
                    callOnce = false;
                }
        }

        function myFunction() {
            console.log('5 seconds');
        }

        setInterval(monitorVideo, 100);
    </script>
</body>
</html>

答案 2 :(得分:-2)

告诉我们您正在使用的视频播放器。

如果是自定义的,则在部分内容上显示一个ID,说明您在视频中的距离并说出

if (document.getElementById("bla").innerhtml === whatever 5 seconds before the end of the video is)
function();