javascript - 如何在扩展中播放音频?

标签 javascript firefox-addon html5-audio firefox-addon-sdk

AudioObj = new Audio;

将返回“音频未定义”

我还尝试了经典修复:

var audio = require("audio");

但没有运气。我可以在扩展的其他部分而不是在 main.js 中添加音频播放,就像它工作的一些内容脚本一样,但也许有一个更简单和优雅的解决方案。

最佳答案

new Audio创建一个新的 <audio> HTML 元素 - 这仅适用于绑定(bind)到文档的上下文。 SDK 模块在没有文档的上下文中执行,因此没有 DOM 方法将起作用,包括这个方法。解决方法是加载 about:blank通过 page-worker module并在那里注入(inject)内容脚本。然后,您可以向该内容脚本发送消息,并让它在您需要时为您播放音频。

替代方法是使用 nsISound.play() ,沿着这些线的东西:

var {Cc, Ci} = require("chrome");
var sound = Cc["@mozilla.org/sound;1"].createInstance(Ci.nsISound);
var uri = Cc["@mozilla.org/network/io-service;1"]
            .getService(Ci.nsIIOService)
            .newURI(self.data.url(...), null, null);

sound.play(uri);

请注意 nsISoundlikely to be deprecated很快。它是一个旧 API,不如 HTML5 音频。

关于javascript - 如何在扩展中播放音频?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10661507/

相关文章:

javascript - 将一个 div 插入另一个用于移动设备的静态 div

javascript - 使用 Lodash 从 JSON 对象获取特定于环境的配置

javascript - 屏蔽输入在桌面上工作正常,在移动设备上工作正常

mysql - 是否有_ANY_方法可以从 XULRunner/Firefox 附加组件连接到 mysql 服务器?

javascript - 将菜单转换为下拉菜单

firefox-addon - 如何使 firefox 扩展兼容?

javascript - 在一系列打开的选项卡上运行一系列脚本

javascript - 如何播放对话框流的输出音频(int 数组)

javascript - 在 touchstart 上播放音频

audio - mp3 音频适用于所有浏览器,但不适用于 IE9