5
AudioObj = new Audio;

「オーディオは定義されていません」を返します

私も古典的な修正を試しました:

var audio = require("audio");

しかし、運がありません。拡張機能の一部でオーディオ再生を追加することもできます。たとえばmain.js、コンテンツスクリプトが機能する場合などですが、よりシンプルで洗練されたソリューションがあるかもしれません。

4

3 に答える 3

6

new Audio新しい<audio>HTML 要素を作成します。これは、ドキュメントにバインドされたコンテキストでのみ機能します。SDK モジュールはコンテキストで実行されますが、ドキュメントがないため、これを含む DOM メソッドは機能しません。回避策は、モジュールabout:blankを介してロードし、そこにコンテンツ スクリプトを挿入することです。次に、そのコンテンツ スクリプトにメッセージを送信し、必要なときにいつでもオーディオを再生できるようにします。page-worker

代替手段は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注意してください。HTML5 オーディオに劣る古い API です。

于 2012-05-21T06:15:32.537 に答える
4
var window = require("sdk/window/utils").getMostRecentBrowserWindow();
AudioObj = new window.Audio;
于 2014-06-26T05:25:35.603 に答える
1

main.jsは、Webコンテンツに通常存在するDOMAPIにアクセスできません。DOM APIを使用する場合は、コンテンツスクリプトを使用する必要があります。SDKモジュールシステムの動作の詳細については、次のドキュメントを参照してください。

https://addons.mozilla.org/en-US/developers/docs/sdk/1.7/dev-guide/guides/commonjs.html

于 2012-05-21T01:52:54.587 に答える