【发布时间】:2016-01-18 11:14:57
【问题描述】:
出于我正在工作的项目的目的,我想通过 JS 控制台了解在 facebook.com 上找到的
您可以通过键入以下内容找到该元素:
$$("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();
如果我检查 $$("audio")[0].paused,它会显示 false,但我没有找到任何属性或事件可以表明它是否播放声音。 (我不希望它出现在这里,因为我认为它没有要播放的音频数据,但如果有办法检查,我可以将其与播放声音的音频元素进行比较。)
另外,我曾尝试通过隐身标签向自己发送一条消息,但没有看到发生这种情况的痕迹。 (我假设音频元素被用于此。)
感谢您的帮助。
【问题讨论】:
-
这有点不清楚你问的是什么。你只想知道它是否真的在玩吗?如果是这样,您只需检查其
paused属性。 (if(!yourAudio.paused)console.log('isPlaying')) 和there are dupes。否则,请澄清您的问题。 -
我以为我很清楚,但如果有更好的表达方式,我会很乐意进行编辑。我想知道它是否正在播放声音或曾经播放过声音(即我真的听到了什么吗?)。我认为这个陈述与我的问题最相关:“如果我检查 $$("audio")[0].paused,它将显示为 false,但我没有找到任何表明它是否播放的属性或事件声音与否。”
-
“播放的声音”是什么意思?是否要检查加载的媒体是否没有声音? (困难但可行)您要检查它是否已静音? (很容易检查)你想检查它是否至少已经播放过一次,无论它现在是什么状态? (简单)
-
Ps : 在查看您的个人资料页面后,您必须知道您将无法将网页上的所有声音静音:如果它来自闪存,您会卡住,如果音频元素没有附加到 DOM 也不能通过全局范围访问,你被外部 iframe 卡住了,你被卡住了,可能还有其他原因导致这不可能。
-
我现在看到您编辑的评论,这个 IMO 的最佳解决方案是检查将返回 TimeRange 的
audioElement.played属性。然后您可以检查此 TimeRange 的长度以了解它是否至少播放过一次 (if(audioElement.played.length>0){// has been played})
标签: javascript html google-chrome audio