我正在学习为 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'”
据我了解,谷歌声明该政策是为了防止将任意字符串评估为可执行的逻辑块。但是我在我的对象之间传递实际函数,所以我不太确定这里必须纠正什么?
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(); }
};