Я пытаюсь реализовать собственное расширение Chrome, в котором при определенном событии создается уведомление браузера и заполняется всплывающее окно данными, рассчитанными в background.js
Вот мой manifest.json
файл:
{
"name": "Dummy name",
"description": "Description",
"manifest_version": 2,
"version": "1.1.3",
"icons": {
"16": "icon_16.png",
"48": "icon_48.png",
"128": "icon_128.png",
"256": "icon_256.png"
},
"browser_action": {
"default_icon": "icon_48.png",
"default_title": "Test",
"default_popup": "popup.html"
},
"permissions": ["background","webRequest","webRequestBlocking","webNavigation","tabs","notifications"],
"background": {
"scripts":["jquery-1.8.1.min.js","classy.js","background.js"]
}
}
Мой звонок sendMessage
через background.js
show : function(result) {
var that = this;
chrome.extension.sendMessage({greeting: "hello"}, function(response) {
console.log(response);
});
if(window.webkitNotifications) {
var notification = webkitNotifications.createHTMLNotification('notification.html');
notification.show();
setTimeout(function(){
notification.cancel();
}, '7000');
}
}
Мой слушатель сообщений в popup.js
(из примеров расширения Chrome)
chrome.extension.onMessage.addListener(
function(request, sender, sendResponse) {
console.log(sender.tab ?
"from a content script:" + sender.tab.url :
"from the extension");
if (request.greeting == "hello")
sendResponse({farewell: "goodbye"});
});
Единственная ошибка, которую я получаю, - это
Ошибка порта: не удалось установить соединение. Приемного конца не существует.
Спасибо за помощь!
chrome.extension.onMessage
. - person Rob W   schedule 04.09.2012alert('')
диалоговое окно, чтобы увидеть, выполняются ли методы в ожидаемом порядке. Боковое примечание: вы можете напрямую общаться между всплывающим окном / фоном черезchrome.extension.getBackgroundPage()
( получает доступ к глобальному объектуwindow
фона из всплывающего окна) иchrome.extension.getViews({type:'popup'})[0]
( чтобы получить глобальный объектwindow
всплывающего окна, если он существует, с фоновой страницы). - person Rob W   schedule 05.09.2012chrome.extension
устарел с Chrome v58, используйтеchrome.runtime
- person evandrix   schedule 29.04.2018storage
для отслеживания изменений состояния, пока всплывающее окно открыто (что эквивалентно отправке сообщения во всплывающее окно). Я разместил ответ ниже. - person Maciej Krawczyk   schedule 22.06.2021