如何检测Chrome标签页是否正在播放音频?

Ome*_*r H 5 javascript google-chrome google-chrome-devtools

我想在特定选项卡上执行控制台命令,并接收布尔回答,即该选项卡是否正在播放音频。(通常在标签标题附近用小扬声器图标表示)

能做到吗?

dor*_*zur 6

也许这样的事情可以解决您的问题: !!Array.prototype.find.call(document.querySelectorAll('audio,video'),function(elem){return elem.duration > 0 && !elem.paused}) 检测当前正在播放的音频和视频元素。跨浏览器工作。


Gid*_*zer 5

您可以使用chrome.tabs API来检测Chrome标签页是否正在播放带有Chrome扩展程序的音频。API提供了一个布尔audible属性,如下所述:

该选项卡是否在过去的几秒钟内发出了声音(但是如果也将其静音,则可能不会听到)。等效于扬声器音频指示器是否正在显示。

来源: https //developer.chrome.com/extensions/tabs

由于它是从当前页面的上下文中运行的,因此无法从控制台本身访问选项卡。在Chrome扩展程序的背景页面中,您可以访问所有标签,并可以使用上述API查询它们。您的扩展程序可以简单地提供一个面板,该面板显示所有打开的选项卡的列表以及一个标记,用于说明音频是否正在播放。

另外:如果您只想使用Chrome控制台在当前标签中快速静音HTML5音频/视频,则可以运行以下命令($$等效于document.querySelectorAll()):

$$('video', 'audio').forEach((element) => element.muted = true);
Run Code Online (Sandbox Code Playgroud)