如果它们重叠,有没有办法排除其中一种 contextMenu ?
例如:
我有两个上下文项,可编辑和选择
在这两种类型匹配的情况下(选择内部可编辑)
Chrome会为这两个操作提供子菜单
我想只有一个。
在这种特定情况下,我如何确定其中一种类型的优先顺序?
答案 0 :(得分:1)
如果菜单项类型相同(即相同类型,类型等),则可以声明上下文菜单并指定多个上下文。然后,如果任何上下文匹配,菜单项将显示。
但是,您已经声明确实需要单独的上下文菜单声明:
contextMenus
API不直接支持此用例。因此,下一个最佳选择是在第三种情况下出现上下文菜单之前删除“可编辑”的上下文菜单(并在第三种情况不再相关时恢复上下文菜单)。
在您的情况下,我会使用selectionchange
来检测用户(de)何时选择文本。选择文本后,检查输入字段是否在选择中(为此,您可以组合Selection
,Range
和/或DOM(遍历)API。如果找到输入字段,请删除所需的上下文菜单项。
无论您是否找到菜单项,都要为键和/或鼠标事件添加侦听器,以检测用户的指针是否在输入字段上。
以下是使用selectionchange
(https://stackoverflow.com/a/13673942/938089)而另一个使用Showing context menu buttons only when right-clicked on classes that start with “Story”的示例。