我正在使用AngularJS开发一个 Firefox 扩展,并且我正在尝试在我的 main.js 文件中使用一些 AngularJS 服务。我require()
用来包含相关模块并angular.bootstrap()
初始化模块。
但是,我总是收到以下错误:
参考错误:未定义窗口
我还能做些什么吗?
我正在使用AngularJS开发一个 Firefox 扩展,并且我正在尝试在我的 main.js 文件中使用一些 AngularJS 服务。我require()
用来包含相关模块并angular.bootstrap()
初始化模块。
但是,我总是收到以下错误:
参考错误:未定义窗口
我还能做些什么吗?
AngularJS 并不真正适用于这种环境 - 它是一个 MVC 框架,在您的情况下 V(视图)缺失。你没有告诉你想用 AngularJS 做什么,但你可能想考虑在你的内容脚本中使用它,而不是main.js
.
也就是说,AngularJS 通常window
只是简单地用作访问全局对象的一种方式。这很容易修复,AngularJS 源代码的倒数第二行说:
})(window, document);
这应该改为:
})(this, document);
这至少会允许那些不需要视图的功能继续进行。当然,您仍然需要删除最后一行(试图将样式表插入文档的行)并导出angular
变量:
exports.angular = angular;
没有太多细节,所以我不确定这个建议是否符合你想要做的。如果您想使用一些需要 DOM 并且不想向用户显示文档的 JS 库,请考虑使用 page-worker 模块:
https://addons.mozilla.org/en-US/developers/docs/sdk/latest/packages/addon-kit/page-worker.html
您需要在 worker 和 main.js 之间设置事件驱动的通信,就像 SDK 代码使用的任何其他内容文档一样:
https://addons.mozilla.org/en-US/developers/docs/sdk/latest/dev-guide/guides/events.html
您要更新的观点是什么?您应该能够提供angular.bootstrap
一些非根元素来开始编译。http://docs.angularjs.org/api/angular.bootstrap
如果您正在使用一些依赖于窗口的服务,您可能还需要提供自己的调整$window
服务。http://docs.angularjs.org/api/ng.$window
可能您必须通过获取窗口对象
var window = require("window-utils").activeBrowserWindow;
?