从scratchpad访问附加SDK模块



我想用草稿板测试一小段附加代码。在这种情况下,我试图像这样访问通知模块:

const { notify } = require("sdk/notifications");
notify({
  //My notification's options
}); 

如预期的那样,我得到了错误Exception: require is not defined。由于Add-on SDK打包在Firefox中,我想知道是否有一种方法可以直接从scratchpad访问模块。谢谢。


编辑:经过一些谷歌搜索,我找到了scratch-kit (github),一个附加组件,正是我想做的。但不幸的是,它被打破了,所以我已经提交了一个错误,希望这个功能将被添加到devtools。

现在有一种相对简单的方法可以做到这一点。如果在特权上下文中执行(即将Scratchpad的环境切换为"Browser"),以下代码可以正常工作:

let {require} = Cu.import("resource://gre/modules/commonjs/toolkit/require.js", {});
let {notify} = require("sdk/notifications");

从Firefox 36开始支持此功能,但目前还没有真正的文档-这意味着将来可能会停止工作。

参考:pull request #1679添加了这个功能(似乎不意味着外部使用)。

目前还没有办法做到这一点。有一些事情可能会使这成为可能,人们可以观看/贡献:

  1. scratch-kit更新
  2. 原生喷气背包已完成,并与痒板集成(应取代抓包)。我做了一个例子,我的博客,但还没有准备好发布。

最新更新