防止音频恢复
Prevent audio resume
我有一个 vanilla JS 网络应用程序,它播放声音以响应特定事件,按下按钮会停止声音。一切正常。
但是,我最近开始在我的鼠标上使用专用媒体 play/pause 按钮,我注意到这个按钮恢复播放该选项卡中的最后一个声音,即使它已经被取消。
我能以某种方式阻止这种情况吗?对于停止,我目前正在使用 this answer:
中提到的标准解决方案
sound.pause();
sound.currentTime = 0;
这是在 Windows 10.
上的 Firefox 中
我考虑过在关键事件上执行 preventDefault,因为没有理由 play/pause 这些(警报)声音就像它们是媒体轨道一样。但是提示这个事件是浏览器处理的,JS是不可用的
据我所知,此行为并未在任何地方指定。当用户按下硬件按钮切换声音时,当今的浏览器会以某种方式尝试“做正确的事”。
有一个 Media Session Standard 允许自定义体验,但如果未使用,浏览器会尝试在页面上寻找活动媒体元素以应用事件。
至少据我所知,Web Audio API 到目前为止还没有连接到任何硬件密钥。如果您的文件相当小,使用 AudioBufferSourceNode
代替音频元素可能是有意义的。
无论如何,一个似乎在 Firefox 和 Chrome 中有效的快速修复是将 currentTime
设置为 duration
而不是将其设置为零。
sound.pause();
sound.currentTime = sound.duration;
我有一个 vanilla JS 网络应用程序,它播放声音以响应特定事件,按下按钮会停止声音。一切正常。
但是,我最近开始在我的鼠标上使用专用媒体 play/pause 按钮,我注意到这个按钮恢复播放该选项卡中的最后一个声音,即使它已经被取消。
我能以某种方式阻止这种情况吗?对于停止,我目前正在使用 this answer:
中提到的标准解决方案sound.pause();
sound.currentTime = 0;
这是在 Windows 10.
上的 Firefox 中我考虑过在关键事件上执行 preventDefault,因为没有理由 play/pause 这些(警报)声音就像它们是媒体轨道一样。但是
据我所知,此行为并未在任何地方指定。当用户按下硬件按钮切换声音时,当今的浏览器会以某种方式尝试“做正确的事”。
有一个 Media Session Standard 允许自定义体验,但如果未使用,浏览器会尝试在页面上寻找活动媒体元素以应用事件。
至少据我所知,Web Audio API 到目前为止还没有连接到任何硬件密钥。如果您的文件相当小,使用 AudioBufferSourceNode
代替音频元素可能是有意义的。
无论如何,一个似乎在 Firefox 和 Chrome 中有效的快速修复是将 currentTime
设置为 duration
而不是将其设置为零。
sound.pause();
sound.currentTime = sound.duration;