javascript - "muted"和 "volume = 0.0"是一样的吗?事件监听器以不同的方式对待它们

标签 javascript html

我是编码的新手,遇到了一个我找不到解决方案的问题。我正在制作一个小型媒体播放器,我打算将其与我指导的运动员一起使用。我的想法是强制他们听我对他们看的游戏电影的评论。因此,如果音量太低,播放器会暂停。我已经做到了当音量降低到 10% 以下时播放暂停。但是,当按下静音按钮(在默认的 HTML5 媒体播放器中)时,播放不会暂停。

那么静音和 0.0 的音量不一样吗?当我将 slider 一直降至零时(我只能在没有警报的情况下执行此操作,否则在警报触发时它会卡在 0.1),音量/静音按钮显示静音。但我敢肯定那是因为我必须超过事件监听器正在寻找的 0.1 阈值。

我的代码是这样的

video.addEventListener("volumechange", function() {
        if (video.volume < 0.1) {
            video.pause();
            alert('Video Paused: Volume too low');
        }   
    }); 

无论如何,我打算自定义我的播放器的控件,所以我想我可以很容易地让它与 onclick 事件一起工作,但我觉得这一点困惑值得同时弄清楚。

那么音量 slider 更改是否包含在 volumechange 事件中?或者有没有办法让静音状态被 volumechange 事件监听器识别?或者一种为静音制作单独的方法?(我知道这不是一个事件。)或者我应该把它放在 table 上直到我制作我的自定义控件?

谢谢。

最佳答案

description for the volumechange event说:

Sent when the audio volume changes (both when the volume is set and when the muted attribute is changed).

假设这是准确的,您的事件处理程序将在静音和取消静音时触发,所以这应该只是使用 muted 的问题if 语句中的属性:

if (video.volume < 0.1 || video.muted) {
    // Pause.
}

volume 的值独立于muted,并且在您静音或取消静音时不会改变。

关于javascript - "muted"和 "volume = 0.0"是一样的吗?事件监听器以不同的方式对待它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38625581/

相关文章:

javascript - 使用 Angular 智能表的日期范围过滤器

javascript - ES6 模块未按预期在 React 中导入

html - 我不能把 <data :label. name/> 放到 &lt;title&gt;HERE&lt;/title&gt; 吗?

javascript - 悬停时类更改 : CSS vs jQuery (transition glich)

html - 为什么要在 HTML 中使用容器 div?

javascript - 为什么音频不能在 javascript 中播放

javascript - 在不滚动的情况下加载当前 div 上方的新 Ajax 内容

javascript - 当宽度变窄时,VideoJS 控件(CC、音频)是否应该出现在视频元素下方?

javascript - 获取数组元素中的位置

html - 如何更改可编辑 div 中元素的光标样式