Playing a sound in a Firefox add-on

匿名 (未验证) 提交于 2019-12-03 02:15:02

问题:

I would like to create a simple add-on that would play a different MP3 recording every time the user double clicks a word in a webpage he is visiting and selects a special option from the context menu.

The MP3 files are located on a remote server. Normally I would use JavaScript+Flash to play the MP3 file. In a Firefox add-on, however, I'm unable to load external scripts for some reason (playing the sound works fine if it's the webpage itself that loads the scripts, but of course I need it to work with every website and not just the ones that include the script).

So what's the easiest way to play a remote MP3 file in a Firefox add-on using JavaScript?

回答1:

This may not entirely solve your question, as I don't BELIEVE it plays MP3s, but I'm not certain.

Firefox has nsISound, which I KNOW can play remote WAV files, as I've tested and proved it.

You may want to test it for yourself and see if it leads you a little closer!

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); 

Good luck, I hope this at least gets you close!



回答2:

See http://www.mozdev.org/pipermail/project_owners/2008-February/011041.html

=> nsISound

You can NOT play remote files from XUL, that is a security restriction. You could load a website that plays the sound as workaround.



回答3:

Here is a working code....

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);   


回答4:

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


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!