Chrome 扩展程序:仅可编辑选定文本上的上下文菜单

Mar*_*ial 2 javascript google-chrome contextmenu google-chrome-extension

在 Google Chrome 扩展程序中,我知道如何在选定文本上显示上下文菜单。

chrome.contextMenus.create({
    'title': 'TEST',
    'contexts': ['selection'],
    'id': "test"
});

chrome.contextMenus.create({
    'title': 'submenu',
    'contexts': ['selection'],
    'id': "test_1",
    'parentId': "test",
    'onclick': menu.onClicked_
});
Run Code Online (Sandbox Code Playgroud)

上下文菜单

但我只想在所选文本位于“可编辑元素”(输入文本、文本区域、内容可编辑 DIV 等)中时才显示此菜单。我怎样才能做到这一点 ?

谢谢!

Xan*_*Xan 5

看起来几乎不可能实现你想要的。

Chrome API为上下文菜单定义了 2 个相关的上下文:

  • "editable" 所有可编辑元素的上下文
  • "selection" 对于选定的文档片段

您想要的是它们之间的逻辑 AND,但 Chrome 只允许逻辑 OR。

还要考虑一个选择可以跨越多个可编辑元素。因此,您需要一个可以描述为“完全在可编辑元素内进行文本选择”的上下文。好吧,您可以随时留下功能请求

可能有一些棘手的解决方法,例如尝试使用每个页面上的内容脚本检测用户选择,并基于此动态创建菜单,但我确信有太多的极端情况。