Вам потребуется управлять созданием меню контента из скрипта контента.Динамическое создание / удаление меню должно выполняться довольно быстро, и задержка будет незаметна для пользователя.
- Добавьте прослушиватель событий mousedown в скрипт содержимого и проверьте, удовлетворяет ли выбор вашему шаблону.
- В зависимости от того, соответствует ли выбор шаблону, отправьте запрос на фоновую страницу с просьбой создать или удалить меню.
Что-то в этом духе (не проверено):
content_script.js:
document.addEventListener("mousedown", function(event){
var selection = window.getSelection().toString();
if(selection.match(/^10\./)) {
chrome.extension.sendRequest({cmd: "create_menu"});
} else {
chrome.extension.sendRequest({cmd: "delete_menu"});
}
}, true);
background.html:
chrome.extension.onRequest.addListener(function(request) {
if(request.cmd == "create_menu") {
chrome.contextMenus.removeAll(function() {
chrome.contextMenus.create({
"title" : "Resolve DOI",
"type" : "normal",
"contexts" : ["selection"],
"onclick" : getClickHandler()
});
});
} else if(request.cmd == "delete_menu") {
chrome.contextMenus.removeAll();
}
});