1

我想使用 requirejs 在 firefox xul 插件中管理我的代码,但我无法让它找到我的模块。

我知道 xul 不能很好地使用该data-main属性,所以我将 main.js 脚本作为第二个脚本:

<script src="chrome://myPackage/content/require.js" type="application/x-javascript"></script>
<script src="chrome://myPackage/content/main.js" type="application/x-javascript"></script>

这成功调用了脚本,并且 main.js 中提供了 require 函数,但是当我运行时

require(['lib1'], function(lib1){
    alert(lib1.val1);
})

警报永远不会弹出(lib1 与 main.js 位于同一目录中)。

我已经在内部和没有将baseUrl设置为

require.config({
    baseUrl: "chrome://myPackage/content/"
})

它不起作用。

有谁知道我怎样才能让 require.js 找到我的模块的正确位置?

附录**

我添加了一个错误处理函数,返回的错误代码是

http://requirejs.org/docs/errors.html#timeout

我已成功将测试模块加载到普通网页中。这似乎证实问题出在路径配置上(在失败之前也需要 15 秒超时)

4

1 回答 1

2

Firebug 似乎有一个工作的 requirejs 版本。但更重要的是,它们具有更好的性能mini-require.js,在叠加层中使用时不会污染共享的全局范围(如果使用正确:p)

我建议你看看这些实现以及使用它的代码。

主动警告:请注意,如果您的附加组件使用的代码window通过定义全局函数或变量或在函数中隐式声明变量,在覆盖 () 范围内定义了许多新属性,那么这可能会干扰其他代码在相同的范围(浏览器代码本身和其他附加组件)。此外,如果你想将你的插件提交到 addons.mozilla.org,那么如果你的插件“污染”了主覆盖中的全局范围/命名空间,审阅者可能不会给它公开状态。

于 2013-08-26T21:01:10.110 回答