在Firefox插件中播放声音

时间:2010-08-29 20:27:21

标签: audio firefox-addon

我想创建一个简单的插件,每当用户双击他正在访问的网页中的某个单词并从上下文菜单中选择一个特殊选项时,该插件就会播放不同的MP3录音。

MP3文件位于远程服务器上。通常我会使用JavaScript + Flash来播放MP3文件。但是,在Firefox附加组件中,由于某种原因,我无法加载外部脚本(如果是加载脚本的网页本身,播放声音效果很好,但当然我需要它来处理每个网站而不仅仅是包含脚本的那些。)

那么使用JavaScript在Firefox附加组件中播放远程MP3文件的最简单方法是什么?

5 个答案:

答案 0 :(得分:5)

这可能无法完全解决您的问题,因为我不相信它会播放MP3,但我不确定。

Firefox有nsISound,我知道它可以播放远程WAV文件,正如我测试并证明的那样。

您可能想亲自测试一下,看看它是否会让您更近一点!

var ios = Components.classes['@mozilla.org/network/io-service;1'].getService(Components.interfaces.nsIIOService);
var sound = ios.newURI("http://www.yoursite.com/snds/haha.wav", null, null); 
var player = Components.classes["@mozilla.org/sound;1"].createInstance(Components.interfaces.nsISound);

player.play(sound);
祝你好运,我希望至少能让你接近!

答案 1 :(得分:0)

请参阅http://www.mozdev.org/pipermail/project_owners/2008-February/011041.html

=> nsISound

您无法从XUL播放远程文件,这是一项安全限制。您可以加载播放声音的网站作为解决方法。

答案 2 :(得分:0)

这是一个有效的代码......

var sound = Components.classes["@mozilla.org/sound;1"].createInstance(Components.interfaces.nsISound); 
var soundUri = Components.classes['@mozilla.org/network/standard-url;1'].createInstance(Components.interfaces.nsIURI); 
soundUri.spec = "chrome://secchat/content/RING.WAV"; 
sound.play(soundUri);  

答案 3 :(得分:0)

var window = require('sdk/window/utils').getMostRecentBrowserWindow();
var audio = ('http://example.com/audio.mp3');
audio.play();

答案 4 :(得分:0)

我知道这是一个老问题,但如果有人需要一种方法来做到这一点:

let player = document.createElement("audio");
player.src = browser.runtime.getURL(SOUND_URL);
player.play();

有一个警告:用户必须允许在网站上自动播放。