我不知道如何将侦听器添加到视频播放中。我希望它最终在达到特定播放时间(即 10 秒)时停止。
我试过了:
while( video.currentTime != timeToStop){
video.play();
}
但这会导致浏览器挂起,可能是因为我一直在启动 video.play() 。
do while
导致同样的问题。
那我应该用什么?
我不知道如何将侦听器添加到视频播放中。我希望它最终在达到特定播放时间(即 10 秒)时停止。
我试过了:
while( video.currentTime != timeToStop){
video.play();
}
但这会导致浏览器挂起,可能是因为我一直在启动 video.play() 。
do while
导致同样的问题。
那我应该用什么?
要跟踪视频的进度,您可以使用timeupdate
事件并检查currentTime
视频的属性是否已超过最大值。这是一个例子:
window.addEventListener("load", function () {
var video = document.getElementById("video1"),
timeToStop = 2;
video.addEventListener("timeupdate", function () {
if (this.currentTime >= timeToStop) {
this.pause();
}
}, false);
}, false);
演示:http: //jsfiddle.net/eGw52/
(示例使用 2 秒,而不是 10 秒)
视频与承诺很好地配合。这是一个例程,它在特定时间点暂停并返回一个承诺,当这种情况发生时(或视频因其他原因暂停,或结束)。
function pause_at (video, t) {
var promise=new Promise ();
function reached() {
promise.fulfill (video.currentTime);
video.removeEventListener ("timeupdate", timeupdate);
video.removeEventListener ("pause", reached);
}
function timeupdate () {
if (video.currentTime >= t) {
reached ();
video.pause ();
}
}
video.addEventListener ("timeupdate", timeupdate);
video.addEventListener ("pause", reached);
return promise;
}
用法:
pause_at (video,60).then (function () {alert ("At 60-second mark!");});
video.play ();
请注意,视频结束也被认为是视频“暂停”(触发了 pause 事件),因此当视频结束时,promise 也会实现。
根据您的喜好调整您最喜欢的 Promise 库。如果您想向后播放视频(负播放率),则需要解决此问题。:-)