AudioObj = new Audio;
将返回 “音频不definied”如何在扩展中播放音频?
我也尝试了经典修复:
var audio = require("audio");
,但没有运气。我可以在main.js
的扩展的其他部分添加音频播放,就像某些内容脚本的工作原理一样,但也许有一个更简单和优雅的解决方案。
AudioObj = new Audio;
将返回 “音频不definied”如何在扩展中播放音频?
我也尝试了经典修复:
var audio = require("audio");
,但没有运气。我可以在main.js
的扩展的其他部分添加音频播放,就像某些内容脚本的工作原理一样,但也许有一个更简单和优雅的解决方案。
new Audio
创建一个新的<audio>
HTML元素 - 在上下文这只能绑定到一个文件。 SDK模块在没有文档的上下文中执行,因此不包括这个DOM方法。解决方法是通过page-worker
module加载about:blank
并在那里注入内容脚本。然后,您可以将消息发送到该内容脚本,并在需要时让它为您播放音频。
另一种方法是使用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);
注意nsISound
是likely to be deprecated很快。这是一个不如HTML5音频的旧API。
谢谢。页面工作者系统运行良好,虽然我在我的[data]目录中使用了空白html而不是about:blank。我也把计时器放在构造函数中,在被调用后的30秒时间内完成页面工作,当完成警告声时... – DoTheEvo
main.js无权访问web内容中通常存在的DOM apis。如果你想使用DOM apis,你需要使用内容脚本。欲了解更多关于SDK模块系统是如何工作的,请参阅文档:
https://addons.mozilla.org/en-US/developers/docs/sdk/1.7/dev-guide/guides/commonjs.html
var window = require("sdk/window/utils").getMostRecentBrowserWindow();
AudioObj = new window.Audio;
这是正确答案,完美工作。 –
音频对象上是否有文档?我如何使用它来播放声音? – timgeb
var audio =('http://example.com/audio.mp3'); audio.play(); –
您可以使用jPlayer吗? –
当你console.log(新音频)时会发生什么;或console.dir(音频) –
控制台日志只是返回音频未定义。我看了一下jPlayer,看起来更像是一种在html中创建播放器并控制和设计它的方法......我也不太确定如何在main.js中使用它,并且不会粘贴它。 – DoTheEvo