Я хочу отправить сообщение в скрипт контента, когда пользователь выбирает пункт контекстного меню.Сценарий содержимого затем на основе сообщения отформатирует веб-страницу в соответствии с требованиями.
Мне не удалось это сделать, и я смог найти проблему в коде, отвечающем за отправку сообщения (в скрипте контекстного меню), или в коде, отвечающем за получение сообщения (в скрипте содержимого).
Ниже я попытаюсь представить упрощенную версию кода, которая пытается дублировать проблему:
manifest.json
{
"manifest_version": 2,
"name": "MCVE for SO",
"version": "1",
"description": "Demonstrate message passing from context menu to content script",
"author": "Nityesh Agarwal",
"permissions": [
"tabs",
"activeTab",
"contextMenus"
],
"content_scripts": [
{
"matches": ["<all_urls>"],
"js": ["markr.js"]
}
],
"background": {
"scripts": ["backgroundContextMenus.js"]
}
}
backgroundContextMenus.js:
chrome.runtime.onInstalled.addListener(function(){
chrome.contextMenus.create({"title": "Testing",
"contexts": ["selection"],
"id": "testing"});
});
chrome.contextMenus.onClicked.addListener(function(info, tab){
console.log("testing..");
console.log("Before sending the bold message");
chrome.tabs.sendMessage(tab.id, {changeParameter: "bold"});
console.log("After sending the bold message");
});
markr.js:
chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse){
console.log("Text toggled bold");
});
При выборе пункта контекстного меню console
показывает следующие сообщения:
backgroundContextMenus.js: 8 тестирование..
backgroundContextMenus.js: 9 Перед отправкой смелого сообщения
backgroundContextMenus.js: 11 После отправки смелого сообщения
Итак, как вы можете заметить, в журнале нет чего-то вроде
Текст переключен жирным шрифтом
Это означает, что код внутри файла markr.js
не выполняется.Поэтому я подозреваю, что с кодом, ответственным за отправку сообщения, должно быть что-то не так: chrome.tabs.sendMessage(tabs[0].id, {changeParameter: "bold"});
)
Вот еще один фрагмент кода, который я пытался продублировать, но он вызвал ту же проблему - https://stackoverflow.com/a/14473739/7082018
Я не могу понять, что именно с ним не так.Было бы очень полезно, если бы кто-то помог мне сказать, как я могу успешно передавать сообщения между контекстным меню и страницей содержимого.