AngularJSを使用して Firefox 拡張機能を開発しており、main.js ファイル内で AngularJS サービスの一部を使用しようとしています。require()
関連するモジュールをインクルードし、モジュールangular.bootstrap()
を初期化するために使用します。
ただし、常に次のエラーが発生します。
参照エラー: ウィンドウが定義されていません
他にできることはありますか?
AngularJSを使用して Firefox 拡張機能を開発しており、main.js ファイル内で AngularJS サービスの一部を使用しようとしています。require()
関連するモジュールをインクルードし、モジュールangular.bootstrap()
を初期化するために使用します。
ただし、常に次のエラーが発生します。
参照エラー: ウィンドウが定義されていません
他にできることはありますか?
AngularJSは、実際にはこの種の環境を対象としたものではありません。これはMVCフレームワークであり、この場合、V(ビュー)がありません。AngularJSを何に使用するかはわかりませんが、コンテンツスクリプトで使用することを検討することをお勧めしますmain.js
。
とはいえ、AngularJSはwindow
、グローバルオブジェクトにアクセスするための手段として単に使用していることがよくあります。これは簡単に修正できます。AngularJSソースコードの最後から2番目の行は次のように述べています。
})(window, document);
これは次のように変更する必要があります。
})(this, document);
これにより、少なくとも、実際にはビューを必要としない機能を続行できます。もちろん、最後の行(スタイルシートをドキュメントに挿入しようとしている行)を削除して、angular
代わりに変数をエクスポートする必要があります。
exports.angular = angular;
詳細があまりないので、この提案があなたのやりたいことに合っているかどうかはわかりません. DOM を必要とし、ユーザーにドキュメントを表示したくない JS ライブラリを使用したい場合は、page-worker モジュールの使用を検討してください。
https://addons.mozilla.org/en-US/developers/docs/sdk/latest/packages/addon-kit/page-worker.html
SDK コードで使用される他のコンテンツ ドキュメントと同様に、worker と main.js 間のイベント ドリブン通信を設定する必要があります。
https://addons.mozilla.org/en-US/developers/docs/sdk/latest/dev-guide/guides/events.html
更新しようとしているビューは何ですか? angular.bootstrap
コンパイルを開始するための非ルート要素を提供できるはずです。http://docs.angularjs.org/api/angular.bootstrap
ウィンドウに依存するサービスを使用している場合は、独自の微調整$window
サービスを提供する必要がある場合もあります。http://docs.angularjs.org/api/ng.$window
経由でウィンドウオブジェクトを取得する必要があるかもしれません
var window = require("window-utils").activeBrowserWindow;
か?