Abspielen von Audio aus dem Datenverzeichnis der Firefox-Erweiterung

8

Ich erstelle eine Firefox-Erweiterung und kann keinen Sound abspielen, der sich im Verzeichnis data des Add-ons befindet.

  1. Das erste, was ich ausprobiert habe, war, es auf diese Weise in einem Inhaltsskript abzuspielen:

    %Vor%

    Dabei ist self.options.soundFile eine Option, die auf eine Ressourcendatei im Verzeichnis data verweist. Aber ich treffe Sicherheitsrestriktionen:

    %Vor%
  2. Dann habe ich eine Möglichkeit gefunden, Sounds in main.js script abzuspielen (hier: Wie Audio in einer Erweiterung wiedergegeben wird? ):

    %Vor%

    Dieser Befehl schlägt mit folgender Ausnahme fehl:

    %Vor%

    Wenn ich sound.play(...) durch sound.beep ersetze, bekomme ich einen schönen Standard-Systemsound. Es sollte also etwas daran falsch sein, den Ressourcenpfad an die Funktion zu übergeben.

Wenn es in irgendeiner Weise wichtig ist, verwende ich Online-Add-on-Builder.

Bitte schlagen Sie eine Lösung für das Abspielen einer Lösung zum Abspielen von Audio-Erweiterungsressourcen vor.

    
Alexey 08.05.2013, 20:41
quelle

1 Antwort

7

nsISound.play() benötigt eine nsIURI Instanz, keine Zeichenfolge. Sie müssen es zuerst über nsIIOService.newURI() erstellen:

%Vor%

Ich würde jedoch gegen diesen Ansatz empfehlen, nsISound.play() API ist ziemlich veraltet und IMHO nicht Kann Ogg-Dateien trotzdem abspielen.

Audio -Konstruktor benötigt Zugriff auf ein korrektes HTML-Dokument. Der einfachste Weg, um eine SDK-basierte Erweiterung zu erhalten, ist die Verwendung von page-worker Modul :

%Vor%

Sowohl Ihre Sounddatei als auch blank.html (eine leere HTML-Datei) müssen sich im Verzeichnis data/ der Erweiterung befinden. Beachten Sie, wie die Audiodatei über eine relative URL geladen wird. Im Moment sehe ich keine Möglichkeit, eine leere HTML-Datei in der Erweiterung zu vermeiden, HTML-Dateien außerhalb der Erweiterung haben keinen Zugriff auf Erweiterungsdateien und können sie nicht abspielen.

    
Wladimir Palant 12.05.2013, 21:13
quelle