コンテンツ スクリプトでモジュールをロードするために、次のコードを使用しています (ソースhttp://prezi.com/rodnyr5awftr/requirejs-in-chrome-extensions/ )。
require.load = function (context, moduleName, url) {
var xhr;
xhr = new XMLHttpRequest();
xhr.open("GET", chrome.extension.getURL(url) + '?r=' + new Date().getTime(), true);
xhr.onreadystatechange = function (e) {
if (xhr.readyState === 4 && xhr.status === 200) {
eval(xhr.responseText);
context.completeLoad(moduleName)
}
};
xhr.send(null);
};
Chrome コンソールを介してデバッグするときに問題が発生します。モジュールの 1 つでエラーが発生した場合は常に、匿名関数でエラーが発生したことを報告するだけですが、require.js モジュールまたはそのモジュールのどの行でエラーが発生したかは通知されませんが、代わりに常に eval 行を指し示します。上記のスクリプト。
多くの人が、require.js を chrome 拡張機能で使用するときに上記のコードのさまざまなバリエーションを使用しているように見えるので、デバッグ コンソールでより多くの情報を取得する簡単な方法が必要です。
ご協力いただきありがとうございます!!
UPDATE 4/1:上記の eval() ステートメントを Function() を使用するように変更すると、Chrome コンソールが追加情報を追加するという問題が解決したようです。(この回避策のクレジットはこの質問に送られます)。
2 つの機能が完全に互換性があるわけではないことを認識しています (この質問を参照してください)。上記のコードで eval() の代わりに Function() を使用する際の落とし穴を誰かが知っている場合は、私に知らせてください!!