如何在扩展中播放音频
How to play audio in an extension?
AudioObj = new Audio;
将返回"音频未定义">
我还尝试了经典修复:
var audio = require("audio");
但没有运气。我可以在扩展程序的其他部分添加音频播放,而不是在main.js
中,就像它工作的一些内容脚本一样,但也许有一个更简单和优雅的解决方案。
new Audio
创建一个新的 <audio>
HTML 元素 - 这仅适用于绑定到文档的上下文。SDK 模块在没有文档的上下文中执行,因此没有 DOM 方法可以工作,包括这个。解决方法是通过page-worker
模块加载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
可能很快就会被弃用。这是一个旧的API,不如HTML5音频。
var window = require("sdk/window/utils").getMostRecentBrowserWindow();
AudioObj = new window.Audio;
main.js 无法访问通常存在于 Web 内容中的 DOM API。如果要使用 DOM API,则需要使用内容脚本。有关 SDK 模块系统工作原理的更多信息,请参阅文档:
https://addons.mozilla.org/en-US/developers/docs/sdk/1.7/dev-guide/guides/commonjs.html
相关文章:
- 使用HTMLMediaElement向后播放音频
- 播放音频时创建一个跳动的圆圈
- Javascript播放音频后其他没有音频崩溃
- 在播放完成之前再次单击播放音频文件
- 延迟后播放音频标签
- 如何使用Flash CC画布项目在iPad上播放音频
- 使用javascript播放音频(没有HTML5或可见播放器)
- 如何使用Bootstrap和Heroku为Rails应用程序添加隐藏的播放音频
- 检测iOS移动设备的JavaScript比自动播放音频
- 在手机和平板电脑浏览器上播放音频片段
- 需要帮助修复我的javascript"对于循环“;播放音频播放列表
- 自动播放音频播放列表SoundManager2 bar ui
- 单击链接时播放音频剪辑
- 使用 Redux 播放音频文件
- 在 iPad 上延迟后正在播放音频
- 关闭后,引导模式弹出窗口上的视频继续播放音频
- 无法更改用于播放音频的变量
- 我在 html5 音频标签中播放音频时收到 [对象媒体错误]
- 无法使用谷歌应用引擎播放音频.它在本地工作
- 在 javascript 数组中播放音频文件时遇到问题