AudioObj = new Audio;
「オーディオは定義されていません」を返します
私も古典的な修正を試しました:
var audio = require("audio");
しかし、運がありません。拡張機能の一部でオーディオ再生を追加することもできます。たとえばmain.js
、コンテンツスクリプトが機能する場合などですが、よりシンプルで洗練されたソリューションがあるかもしれません。
AudioObj = new Audio;
「オーディオは定義されていません」を返します
私も古典的な修正を試しました:
var audio = require("audio");
しかし、運がありません。拡張機能の一部でオーディオ再生を追加することもできます。たとえばmain.js
、コンテンツスクリプトが機能する場合などですが、よりシンプルで洗練されたソリューションがあるかもしれません。
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 です。
var window = require("sdk/window/utils").getMostRecentBrowserWindow();
AudioObj = new window.Audio;
main.jsは、Webコンテンツに通常存在するDOMAPIにアクセスできません。DOM APIを使用する場合は、コンテンツスクリプトを使用する必要があります。SDKモジュールシステムの動作の詳細については、次のドキュメントを参照してください。
https://addons.mozilla.org/en-US/developers/docs/sdk/1.7/dev-guide/guides/commonjs.html