【发布时间】:2014-03-17 04:22:52
【问题描述】:
我正在尝试暂停一个视频对象。为了实现这一点,我需要做的复杂比较让我感到困惑。也许有必要,但似乎应该更简单。
以下不起作用:
video.addEventListener("timeupdate", function() {
if (this.currentTime == video.endTime) {
this.pause();
}
}, false);
以下确实有效:
video.addEventListener("timeupdate", function() {
if (this.currentTime >= video.endTime && this.currentTime < (video.endTime + 1)) {
this.pause();
}
}, false);
怎么可能?根据HTML Audio/Video DOM currentTime Property,这个值以秒为单位。我只能想象这些秒不一定是整数。如果是这样的话,我可以看到我的听众可能不会立即检查数字是否为整数。这似乎有点愚蠢。
两个时间相等时如何比较?
【问题讨论】:
-
使用MDN::HTMLMediaElement 比使用 W3Schools 好得多。您寻找的属性似乎是 currentTime 和 duration,没有 endTime(尽管您可以添加它)。请注意,这些属性没有规范,它们未在 W3C HTML5 或 WHATWG 规范中定义。
-
谢谢。该资源很有帮助。我已经添加了那个变量。变量正在工作。但是,我不明白为什么它在第一种情况下不匹配。
-
this.currentTime == video.duration中的 this 和 video 指的是什么?如果值是小数秒,则可能需要转换为整秒或使用currentTime >= duration之类的比较而不是==。 -
是的,我认为转换为整秒可能会奏效。我会调查的。
this是当前视频元素,video是endTime变量所附加的内容。endTime以整秒为单位。评估时 currentTime 是否可能不是整秒?换句话说,它可以返回一个整数以外的值,并且有可能被听众错过吗?
标签: javascript html video