出于我正在工作的项目的目的,我想通过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>
此外,我尝试向自己发送一封来自隐身标签的消息,并且没有看到这种情况的痕迹。 (我假设音频元素已用于此。)
非常感谢帮助。
答案 0 :(得分:1)
要检查页面上是否曾播放start
(视频或音频),最佳解决方案是检查其HTMLMediaElement
属性。
这将返回一个TimeRanges
对象,您也可以使用它来获取已播放的媒体数量。
如果从未播放过,则此played
对象的length
属性将设置为TimeRanges
:
0