1

В Google Chrome Extension я знаю, как отображать контекстное меню для выбранного текста.Расширение 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_ 
}); 

context menu

Но я хочу показать это меню, только если выбранный текст в «редактируемый элемент» (ввод текста, текстовое поле, содержимое редактируемой DIV, ...). Как я могу это сделать ?

Спасибо!

+0

Вы пробовали контекст '" editable "' вместо '" selection "'? Документация не очень понятна в отношении того, что это значило бы. – Xan

+1

С '" editable ", меню появляется только в редактируемом элементе. Но оно появляется даже без выделенного текста. – Martial

+0

Тогда у меня есть сомнения, что это возможно. – Xan

ответ

2

Похоже, что достичь того, чего вы хотите, почти невозможно.

Chrome API определяет 2 связанные контексты для контекстного меню:

  • "editable" контекст для всех изменяемых элементов
  • "selection" для выбранных фрагментов документа

То, что вы хотите, это логическое И между теми, , но Chrome позволяет только логическое ИЛИ.

Также считайте, что выбор может охватывать более чем редактируемый элемент. Поэтому вам нужен контекст, который можно охарактеризовать как «выбор текста полностью внутри редактируемого элемента». Ну, вы всегда можете leave a feature request.

Возможно, возникли хакские обходные пути, такие как попытка определить выбор пользователя с помощью скрипта контента на каждой странице и создание на лету меню на лету, но я уверен, что есть способ, слишком много угловых случаев для этого.

Смежные вопросы