1

Firefox xul プラグイン内でコードを管理するために requirejs を使用したいのですが、モジュールを見つけることができません。

xul がこのdata-main属性をうまく処理できないことはわかっているので、main.js スクリプトを 2 番目のスクリプトとして使用します。

<script src="chrome://myPackage/content/require.js" type="application/x-javascript"></script>
<script src="chrome://myPackage/content/main.js" type="application/x-javascript"></script>

これによりスクリプトが正常に呼び出され、require 関数は main.js 内で使用できますが、実行すると

require(['lib1'], function(lib1){
    alert(lib1.val1);
})

アラートは決してポップされません (lib1 は main.js と同じディレクトリにあります)。

baseUrlを次のように設定することなく、これを試しました

require.config({
    baseUrl: "chrome://myPackage/content/"
})

どちらの方法でも機能しません。

モジュールの適切な場所にrequire.jsを表示する方法を知っている人はいますか?

補遺**

エラー処理関数を追加し、返されたエラー コードは次のとおりです。

http://requirejs.org/docs/errors.html#timeout

テスト モジュールを通常の Web ページに正常にロードしました。これは、問題がパス構成であることを確認しているようです (失敗する前に 15 秒のタイムアウトもかかります)。

4

1 に答える 1

2

Firebug には、動作する requirejs バージョンがあるようです。しかし、もっと重要なことは、オーバーレイで使用されたときに共有グローバルスコープを汚染しないというはるかに優れmini-require.jsた機能を備えていることです (正しく使用されている場合:p)

これらの実装と、それを使用したコードを確認することをお勧めします。

プロアクティブな警告window:グローバル関数または変数を定義するか、関数内で暗黙的に変数を宣言することにより、アドオンがオーバーレイ ( ) のスコープで多くの新しいプロパティを定義するコードを使用する場合、これはで実行されている他のコードに干渉する可能性があることに注意してください。同じスコープ (ブラウザ コード自体と他のアドオン)。また、アドオンを addons.mozilla.org に提出したい場合、アドオンがメイン オーバーレイのグローバル スコープ/名前空間を「汚染」している場合、レビュアーは公開ステータスを付与しない可能性があります。

于 2013-08-26T21:01:10.110 に答える