如何确定播放HTML5音频是否实际发出声音?

时间:2015-10-19 23:44:13

标签: javascript html5 google-chrome audio

出于我正在工作的项目的目的,我想通过JS控制台找到< audio>在facebook.com上找到的标签是否播放音频。 (然后,我可以将此代码移至Chrome扩展程序中,并将其应用于其他网站,例如无声HTML5广告。)

您可以通过输入以下内容找到该元素:

$$("audio")[0] 

我使用了以下代码(改编自我在搜索过程中找到的this jsfiddle)来显示何时调用不同的事件监听器:

var audio = $$("audio")[0]; 
var events = 'abort,canplay,canplaythrough,durationchange,emptied,ended,error,loadeddata,loadedmetadata,loadstart,pause,play,playing,progress,ratechange,seeked,seeking,stalled,suspend,timeupdate,volumechange,waiting'.split(',');

// event handler
var onEvent = function(e) {
    console.log(e.type);
};

// add event listener to audio for all events
for (var i = 0, len = events.length; i < len; i++) {
    audio.addEventListener(events[i], onEvent, false);
}

然后输入以下内容播放音频:

$$("audio")[0].play();

如果我检查$$(&#34;音频&#34;)[0]。暂停,它将显示错误,但我找不到任何表明它是否播放声音的属性或事件。 (我不希望它到这里,因为我不认为它有音频数据可以播放,但如果有办法检查,我可以将它与播放声音的音频元素进行比较。)< / p>

此外,我尝试向自己发送一封来自隐身标签的消息,并且没有看到这种情况的痕迹。 (我假设音频元素已用于此。)

非常感谢帮助。

1 个答案:

答案 0 :(得分:1)

要检查页面上是否曾播放start(视频或音频),最佳解决方案是检查其HTMLMediaElement属性。

这将返回一个TimeRanges对象,您也可以使用它来获取已播放的媒体数量。

如果从未播放过,则此played对象的length属性将设置为TimeRanges

0
相关问题