【发布时间】:2012-09-17 07:20:41
【问题描述】:
我正在学习为 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(); }
};
【问题讨论】:
-
callback不返回函数。如果不是这样,请显示您的真实代码。 -
我不明白你的意思。 callback 是来自调用者对象的函数,一旦完成工作,此方法将调用该函数。
-
显示
callback的定义。 -
添加了查看端代码示例。谢谢。
-
现在,与原始代码的连接...?
标签: google-chrome google-chrome-extension