阻止音频恢复



我有一个普通的JS web应用程序,它会播放对某个事件的声音,按下按钮就会停止声音。这一切都很好。

然而,我最近开始在鼠标上使用一个专用的媒体播放/暂停按钮,我注意到这个按钮可以恢复播放该选项卡中的最后一个声音,即使它已经被取消。

我能以某种方式阻止这种情况吗?为了停止,我目前正在使用这个答案中提到的标准解决方案:

sound.pause();
sound.currentTime = 0;

这是在Windows 10上的Firefox中。

我想对关键事件执行preventDefault,因为没有理由播放/暂停这些(警报(声音,就好像它们是媒体曲目一样。但基础研究表明,这个事件是由浏览器处理的,JS不可用。

据我所知,任何地方都没有指定这种行为。如今的浏览器不知何故试图";做正确的事;当用户按下硬件按钮来切换声音时。

有一个媒体会话标准,它允许自定义体验,但如果不使用它,浏览器会尝试在页面上寻找活动的媒体元素来应用事件。

至少据我所知,到目前为止,Web Audio API还没有连接到任何硬件密钥。如果您的文件相当小,那么使用AudioBufferSourceNode而不是音频元素可能是有意义的。

无论如何,在Firefox和Chrome中似乎有效的一个快速解决方案是将currentTime设置为duration,而不是将其设置为零。

sound.pause();
sound.currentTime = sound.duration;

最新更新