如何在镀铬扩展中播放声音

Prz*_*ela 12 javascript google-chrome google-chrome-extension

我想在镀铬扩展中播放声音.我该怎么做?我应该在myscript.js文件中写什么?

我试着用myscript.js写:

var audio = new Audio("alarm.wav");
audio.play();
Run Code Online (Sandbox Code Playgroud)

和:

document.write('<audio id="player" src="alarm.wav" >');
document.getElementById('player').play();
Run Code Online (Sandbox Code Playgroud)

但它不起作用.我没有添加任何东西,所以没有未满足的条件.

我的manifest.json文件:

{
  "name": "Alarm",
  "version": "1.0.0",
  "icons": {"64": "icon64.png"},
  "permissions": [
    "http://site1/",
    "http://site2/"
  ],
  "content_scripts": [
    {
      "matches": ["http://site1/", "http://site2/"],
      "js": ["myscript.js"],
      "run_at": "document_end"
    }
  ],
  "manifest_version": 2
}
Run Code Online (Sandbox Code Playgroud)

如果我在myscript.js文件中添加按钮到站点,这个按钮效果很好,但我不能播放声音.我的音频文件是mp3,与manifest.json和myscript.js在同一个文件夹中,我的myscript.js是:

var myAudio = new Audio();
myAudio.src = "alarm.mp3";
myAudio.play();
Run Code Online (Sandbox Code Playgroud)

Mar*_*lli 11

使用JavaScript播放某些声音/音乐的最简单方法是使用一个Audio对象:您只需要在扩展文件夹中放置要播放的文件,就可以像这样播放:

var myAudio = new Audio(chrome.runtime.getURL("path/to/file.mp3"));
myAudio.play();
Run Code Online (Sandbox Code Playgroud)

您可以使用play()并暂停使用pause().

请记住,如果要在内容脚本(或不在chrome://extensionURL 下的任何其他位置)播放声音,则必须在web_accessible_resources清单字段中声明音频文件:

"web_accessible_resources": [
    "path/to/file.mp3"
]
Run Code Online (Sandbox Code Playgroud)

工作实例

您可以下载我从这里制作的测试扩展.当您单击stackoverflow.com页面内的任何内容时,它会通过内容脚本播放声音.

  • 另外不要忘记使用`chrome.extension.getURL(src)`来获得这样的正确路径:`var myAudio = new Audio(); myAudio.src = chrome.extension.getURL("path/to/file.mp3"); myAudio.play(); `这个代码应该在任何js动作之后运行.并在您的manifest.json文件中包含`"web_accessible_resources":["*.mp3"]` (2认同)
  • @Scruffy 不,他们没有,扩展程序的限制较少,可以做更广泛的事情,包括跨域请求和调用通常受到限制的功能,例如在没有用户交互的情况下播放音频。 (2认同)