【问题标题】:Chrome Extension : Context menu on editable selected text onlyChrome 扩展程序:仅可编辑选定文本上的上下文菜单
【发布时间】:2023-03-12 05:05:02
【问题描述】:

在 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_
});

但我只想在所选文本位于“可编辑元素”中时才显示此菜单(输入文本、文本区域、内容可编辑 DIV,...)。我该怎么做?

谢谢!

【问题讨论】:

  • 您是否尝试过使用上下文"editable" 而不是"selection"?文档对它的含义不是很清楚。
  • 使用"editable",菜单仅出现在可编辑元素中。但即使没有选择文本,它也会出现。
  • 那么我怀疑这是可以实现的。

标签: javascript google-chrome google-chrome-extension contextmenu


【解决方案1】:

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

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

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

你想要的是它们之间的逻辑与,但 Chrome 只允许逻辑或。

还要考虑一个选择可以跨越多个可编辑元素。因此,您需要一个可以描述为“完全在可编辑元素内的文本选择”的上下文。好吧,你可以随时leave a feature request

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

【讨论】:

    猜你喜欢
    • 2019-01-11
    • 2012-11-26
    • 2015-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多