可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
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();