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/

相关文章:

firefox - 右键单击在面板中不起作用(firefox addon-sdk)

firefox - 如何使用 Firefox "hello world"示例扩展?

node.js - Node.JS 音频混合 + MP3 生成可能吗?

javascript - HTML5 Web Audio API,从 javax.sound 移植并出现失真

javascript - 我的 D3.js 代码导致将新数据添加为新图形,我希望将其附加到现有图形。我做错了什么?

javascript - 使用 Google Analytics 跟踪单页视频流的实时统计数据

javascript - Adobe DPS Webviewer getByProductId 不起作用

javascript - 我如何知道 javascript 方法何时结束

javascript - 在 Mozilla Add-On SDK 中使用第三方 JS 库

javascript - 如何从 AudioContext 获取缓冲区/原始数据?