Я искал ответ почти неделю, но, прочитав все элементы stackoverflow, я не могу найти решение, которое работает для меня.Расширение Google Chrome: порт: не удалось установить соединение. Окончание приема не существует
ошибка, что я имею: макет
Port: Could not establish connection. Receiving end does not exist. lastError:30 set lastError:30 dispatchOnDisconnect messaging:277
Папка:
img
developer_icon.png
js
sidebar.js
main.js
jquery-2.0.3.js
manifest.json
мой файл manifest.json выглядит примерно так (это версия 2): `
"browser_action": {
"default_icon": "./img/developer_icon.png"
},
"content_scripts": [
{
"matches": ["*://*/*"],
"js": ["./js/sidebar.js"],
"run_at": "document_end"
}
],
"background" : {
"scripts" : ["./js/main.js","./js/jquery-2.0.3.js"]
},
Я хочу обработать пользователя, щелкнув значок расширения, чтобы я мог ввести боковую панель на существующем веб-сайте (b потому что расширение, которое я хотел бы развивать, требует такого объема пространства). Таким образом, в main.js:
chrome.browserAction.onClicked.addListener(function(tab) {
chrome.tabs.getSelected(null, function(tab){
chrome.tabs.sendMessage(
//Selected tab id
tab.id,
//Params inside a object data
{callFunction: "toggleSidebar"},
//Optional callback function
function(response) {
console.log(response);
}
);
});
});
и sidebar.js:
chrome.runtime.onMessage.addListener(function(req,sender,sendResponse){
console.log("sidebar handling request");
toggleSidebar();
});
, но я никогда не в состоянии увидеть console.log в моей консоли из-за ошибки. Кто-нибудь знает, что я сделал неправильно?
Заранее благодарен!
Вы код работает как ожидалось. Получаете ли вы какое-либо сообщение в журнале веб-страницы. Вы проверили, действительно ли введен сценарий контента? (Обязательно перезагрузите любую открытую страницу после развертывания вашего расширения.) – gkalpak
все идет по плану, но когда я вызываю функцию chrome.tabs.sendMessage (...), возникает ошибка. Где я могу проверить, введен ли сценарий? – tcornelis
Когда ваш контент-скрипт получает сообщение, он печатает что-то на консоли. Итак: 1. Откройте новую вкладку (например, 'www.google.com'). 2. Нажмите кнопку действия браузера для расширения. 3. На открывшейся вкладке нажмите Ctrl + Shilf + I, чтобы открыть консоль разработчика. 4. Если скрипт содержимого вводится и получает сообщение со своей фоновой страницы, вы увидите что-то напечатанное на консоли. BTW, ** chrome.tabs.getSelected ** устарел и бесполезен, так как в любом случае вы выбрали выбранную вкладку из прослушивателя 'onClicked'. – gkalpak