Firefox Addon SDK中的page-mod和上下文菜单之间的通信

Pat*_*een 5 firefox contextmenu postmessage add-on firefox-addon-sdk

通过context-menu模块,我检测用户点击了哪个DOM元素我的自定义上下文菜单项"Mark":

var menu = require("context-menu").Item({
  label: "Mark",
  contentScriptFile: data.url("context.js"),
  onMessage: function (node) {
    //Send the node to page-mod
  }
});
Run Code Online (Sandbox Code Playgroud)

context.js:

self.on("click", function (node, data) {
    self.postMessage(node);
});
Run Code Online (Sandbox Code Playgroud)

现在我想将此节点引用发送到一个page-mod模块,其中注入了pagemod的contentScript的每个页面都知道我点击的节点(并在每个选项卡中标记带有红色边框的HTML元素).

我知道postMessage()无法将消息发送到pagemod ,所以如何让这些模块进行通信?有优雅的worker解决方案吗?

eri*_*old 2

这是不可能的,postMessage 部分正在对您的消息进行 JSON 化,因此消息中的节点将被忽略。您可以通过将有关节点的数据发送到插件上下文(使用 postMessage)来实现您的目标。