Javascript 如何删除HTMLAudioElement(electron)的内置媒体密钥侦听器

Javascript 如何删除HTMLAudioElement(electron)的内置媒体密钥侦听器,javascript,html,google-chrome,electron,Javascript,Html,Google Chrome,Electron,我有一个简单的HTMLAudioElement元素: let player = new Audio() player.src = 'file://' + _filePath player.load() 当窗口未聚焦时,使用播放/暂停媒体键暂停和播放 问:如何使其忽略播放/暂停键 我使用的是electron,但不确定这是chrome还是electron实现,所以我将两者都标记。要覆盖可以使用prototype的函数,请参见下面的示例: var audio=新音频; Audio.prototyp

我有一个简单的HTMLAudioElement元素:

let player = new Audio()
player.src = 'file://' + _filePath
player.load()
当窗口未聚焦时,使用播放/暂停媒体键暂停和播放

问:如何使其忽略播放/暂停键


我使用的是electron,但不确定这是chrome还是electron实现,所以我将两者都标记。

要覆盖可以使用prototype的函数,请参见下面的示例:

var audio=新音频; Audio.prototype.play=函数{ 控制台。记录“播放覆盖” }; Audio.prototype.stop=函数{ 控制台。记录“停止覆盖” }; 音频播放;
音频。停止 在这个问题中找到了答案:,谢谢@pablewb18

我们可以覆盖媒体密钥侦听器:

navigator.mediaSession.setActionHandler('play', function() { /* Code excerpted. */ });
navigator.mediaSession.setActionHandler('pause', function() { /* Code excerpted. */ });
navigator.mediaSession.setActionHandler('seekbackward', function() { /* Code excerpted. */ });
navigator.mediaSession.setActionHandler('seekforward', function() { /* Code excerpted. */ });
navigator.mediaSession.setActionHandler('previoustrack', function() { /* Code excerpted. */ });
navigator.mediaSession.setActionHandler('nexttrack', function() { /* Code excerpted. */ });

这似乎覆盖了HTMLAudioElement:play,但它仍然会在单击媒体键按钮时被调用,但我仍然需要使用play通过我的UI@JohnSardinha请查看编辑部分,就本应用程序而言,这是可行的,但媒体密钥仍被截获,这对于一个用户来说不是一个很好的体验,他希望这些键可以与另一个应用程序一起使用,但是不会发生任何事情。但是在第二个应用程序中,我将该函数放在一个变量中。如果你有一个可以与焦点事件一起使用的输入,你可以创建两个函数,一个可以忽略,播放/暂停和另一个在模糊时调用moment@JohnSardinha如果你说的是禁用媒体键,那么你的意思是你没有什么,如果你使用播放媒体键,这个音频播放?这不应该发生。如果它正在播放,这是完全自然的,你的用户可以暂停它从媒体键,我会认为这是非常糟糕的设计,如果我不能这样做。如果用户不想让你的页面发出声音,为什么要阻止他们快速暂停声音?我找到了一个我刚刚发布的答案。用例是我想为用户提供一个设置,如果他们愿意,可以禁用媒体键shortucs,并使用其他自定义快捷方式: