Google Chrome のブラウザ アクション拡張機能の開発を学んでおり、JavaScript 機能を複数のファイルに分割しています。popup.html ファイルでは、スクリプト リソースは次のように定義されます。
<script src="js/Identity.js"></script>
<script src="js/View.js"></script>
View.js は、Identity.js から公開されたオブジェクトのメソッドを呼び出す必要があり、処理が完了したときに通知されるコールバック関数を渡します。ただし、Chrome は実行を中断するようです。
次のコンテンツ セキュリティ ポリシー ディレクティブに違反しているため、スクリプトの評価を拒否しました: "script-src 'self'"
私が理解していることから、Googleは、ポリシーは、任意の文字列が実行可能なロジックブロックに評価されるのを防ぐことであると述べています。ただし、オブジェクト間で実際の関数を渡しているので、ここで何を修正する必要があるかよくわかりません。
IdentityObj.Process = function (params, callback) {
doSomeWork();
setTimeout(callback(true), 1000); // break here
};
View オブジェクトから、例は次のようになります。
View.loginClick = function(event) {
event.preventDefault();
this.loggingInState();
var emailAddr = $('#emailAddr').val();
var password = $('#password').val();
IdentityObj.login(emailAddr, password, this.loginCallback.bind(this));
};
View.loginCallback = function(success) {
if (success) { this.usageState(); }
else { this.errorState(); }
};