为所有网站创建上下文菜单条目,不包括一些

时间:2014-06-23 14:58:10

标签: javascript firefox firefox-addon firefox-addon-sdk

我正在使用Addon SDK开发一个Firefox附加组件,我希望在除Google图像之外的所有网站上包含图像的上下文菜单条目,我将为其添加不同的上下文菜单条目。

var cm = require("sdk/context-menu");

cm.Item({
  label: "LABEL",
  context: [
    cm.URLContext(["*.images.google.*"]),
    cm.SelectorContext("img")
  ],
  contentScript: googleContentScript ,
  onMessage: ...
});

cm.Item({
  label: "LABEL",
  context: [
     cm.URLContext(["*"]),
     cm.SelectorContext("img")
  ],
  contentScript: otherContentScript ,
  onMessage: ...
});

对于第一个URLContext,我想要捕获所有谷歌图像,无论TLD(.com,.co.uk ......)。 对于第二个,我希望能够将URLContext应用于不在第一个中的所有URL。

显然这不是目前正在发生的事情。 任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:3)

对于否定模式,URLSelector的{​​{3}}有些限制且难以处理。

你必须有合理的选择:

  • 您的内容脚本中有一个工具self.on("context", function() ...)。返回false将使菜单项不显示。
  

一个名为" context"的特殊事件只要显示上下文菜单,就会在内容脚本中发出。如果为此事件注册侦听器函数并返回true,则菜单中将显示与侦听器内容脚本关联的菜单项。

  • 如果你的目标是Firefox 29+,那么使用match patterns可能会更容易(维护)并且也会产生更好的性能(因为它不需要启动和浏览内容脚本)。