chrome.contextMenus排除类型

时间:2016-11-12 15:43:32

标签: javascript google-chrome-extension

如果它们重叠,有没有办法排除其中一种 contextMenu
例如:
我有两个上下文项,可编辑选择 在这两种类型匹配的情况下(选择内部可编辑)

enter image description here

Chrome会为这两个操作提供子菜单 我想只有一个。
在这种特定情况下,我如何确定其中一种类型的优先顺序?

1 个答案:

答案 0 :(得分:1)

如果菜单项类型相同(即相同类型,类型等),则可以声明上下文菜单并指定多个上下文。然后,如果任何上下文匹配,菜单项将显示。

但是,您已经声明确实需要单独的上下文菜单声明:

  • “选择”上下文标题为“记笔记”的菜单项。
  • “可编辑”上下文的标题为“插入备注”的菜单项。
  • 两种情境适用时标题为“记笔记”的菜单项,例如在输入字段中选择文本时(因此没有“插入注释”菜单项)。

contextMenus API不直接支持此用例。因此,下一个最佳选择是在第三种情况下出现上下文菜单之前删除“可编辑”的上下文菜单(并在第三种情况不再相关时恢复上下文菜单)。

在您的情况下,我会使用selectionchange来检测用户(de)何时选择文本。选择文本后,检查输入字段是否在选择中(为此,您可以组合SelectionRange和/或DOM(遍历)API。如果找到输入字段,请删除所需的上下文菜单项。 无论您是否找到菜单项,都要为键和/或鼠标事件添加侦听器,以检测用户的指针是否在输入字段上。

以下是使用selectionchangehttps://stackoverflow.com/a/13673942/938089)而另一个使用Showing context menu buttons only when right-clicked on classes that start with “Story”的示例。