【问题标题】:When using currentTime in Javascript, how do I compare for equality?在 Javascript 中使用 currentTime 时,如何比较是否相等?
【发布时间】: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 好得多。您寻找的属性似乎是 currentTimeduration,没有 endTime(尽管您可以添加它)。请注意,这些属性没有规范,它们未在 W3C HTML5WHATWG 规范中定义。
  • 谢谢。该资源很有帮助。我已经添加了那个变量。变量正在工作。但是,我不明白为什么它在第一种情况下不匹配。
  • this.currentTime == video.duration 中的 thisvideo 指的是什么?如果值是小数秒,则可能需要转换为整秒或使用currentTime &gt;= duration 之类的比较而不是==
  • 是的,我认为转换为整秒可能会奏效。我会调查的。 this 是当前视频元素,videoendTime 变量所附加的内容。 endTime 以整秒为单位。评估时 currentTime 是否可能不是整秒?换句话说,它可以返回一个整数以外的值,并且有可能被听众错过吗?

标签: javascript html video


【解决方案1】:

因此,由于我的声誉,我还不能发表评论,但我似乎可以得到正确的结局

this.seekable.end(0)

另外,我认为“>”或“ 这些将有所帮助:
- Control start position and duration of play in HTML5 video
- https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Using_HTML5_audio_and_video

【讨论】:

    猜你喜欢
    • 2012-02-16
    • 1970-01-01
    • 1970-01-01
    • 2014-09-20
    • 2012-02-15
    • 2013-03-29
    • 2010-12-10
    • 1970-01-01
    • 2015-03-13
    相关资源
    最近更新 更多