Прежде всего, расширения имеют "строгую" модель разрешений.Когда вы даете разрешение на contextMenus , вы ограничены следующими контекстами:
«все», «страница», «фрейм», «выделение», «ссылка»,«редактируемый», «изображение», «видео», «аудио», «средство запуска», «browser_action» или «page_action»
Плохой UX
Если он имел "слово" или даже "текст" контекст, это создает непоследовательный пользовательский опыт.Пользователи не знакомы с правым кликом, выполняющим действия над текстом в веб-браузере.
Если вам нужно такое действие, вам нужно ввести content-script , чтобы добавить событие мыши к "автоматическому" выбору этого слова с помощью JavaScriptAPI выбора .Если вы хотите этого, вам нужно предоставить больше «разрешений» вашему расширению для поддержки этого опыта.Это может не понравиться пользователям.
Пример
Если это то, что нужно расширению, просто создайте content-script , который автоматически выбирает это слово.Нечто подобное сработает, что создаст диапазон каретки от положения мыши и изменит его выделение на это слово.Обратите внимание, что в разрешениях я только что включил google.com, вот где скрипт контента будет внедряться.
contentscript.js
document.addEventListener('mouseup', (e) => {
if (e.button !== 2) {
return
}
const selection = window.getSelection()
selection.removeAllRanges()
const range = document.caretRangeFromPoint(e.clientX, e.clientY)
range.expand('word')
selection.addRange(range)
});
background.js
const menu = chrome.contextMenus.create({
'id': 'helloWorld',
'title': 'Hello "%s"',
'contexts': ['selection']
})
chrome.contextMenus.onClicked.addListener((clickData) => {
const inputString = clickData.selectionText
console.log(inputString)
});
manifest.json
{
"name": "contextMenus",
"version": "1.0",
"minimum_chrome_version": "35.0",
"manifest_version": 2,
"permissions": [
"contextMenus"
],
"background": {
"scripts": [
"background.js"
]
},
"content_scripts": [
{
"matches": ["https://*.google.com/*"],
"js": ["contentscript.js"]
}
]
}