Сообщения о расширении Chrome срабатывают несколько раз ⇐ Javascript
-
Гость
Сообщения о расширении Chrome срабатывают несколько раз
Я делаю свое первое расширение для Chrome и заметил, что сообщения, отправляемые с моей страницы popup.html, дублируются в моем прослушивателе событий сообщений content.js. Я регистрировал в консоли «отправку сообщения» перед отправкой каждого сообщения и «получение сообщения» перед каждым сообщением, и я не понимаю, как сообщения дублируются. Я также проверил документацию разработчика Chrome на предмет sendMessage и onMessage, и там указано, что прослушиватель onMessage должен запускаться только один раз для каждого события sendMessage.
Будем благодарны за любую помощь.
popup.html
Практика обмена сообщениями Практика обмена сообщениями content.js
chrome.runtime.onMessage.addListener( функция (запрос, отправитель, sendResponse) { console.log('сообщение получено') console.log(запрос); } ); popup.js
var messageButton = document.querySelector("#send-message"); messageButton.onclick = функция() { chrome.tabs.query({currentWindow: true, active: true}, функция (вкладки) { chrome.tabs.executeScript( tabs[0].id, {файл: "content.js"} ) console.log("отправка сообщения") chrome.tabs.sendMessage(tabs[0].id, «строковое сообщение») }); } background.js
chrome.declarativeContent.onPageChanged.removeRules(undefined, function() { chrome.declarativeContent.onPageChanged.addRules([{ условия: [новый chrome.declarativeContent.PageStateMatcher({ pageUrl: {hostEquals: 'stackoverflow.com'}, })], действия: [новый chrome.declarativeContent.ShowPageAction()] }]); }); manifest.json
{ "name": "Практика отправки сообщений", "версия": "1.0", «manifest_version»: 2, "description": "Простой способ обмена сообщениями с помощью API Chrome", "permissions": ["declarativeContent", "activeTab"], "фон": { "scripts": ["background.js"], «постоянный»: правда }, "page_action": { "default_popup": "popup.html", "scripts": ["content.js"], "соответствует": ["http://*/*","https://*/*"] } }
Я делаю свое первое расширение для Chrome и заметил, что сообщения, отправляемые с моей страницы popup.html, дублируются в моем прослушивателе событий сообщений content.js. Я регистрировал в консоли «отправку сообщения» перед отправкой каждого сообщения и «получение сообщения» перед каждым сообщением, и я не понимаю, как сообщения дублируются. Я также проверил документацию разработчика Chrome на предмет sendMessage и onMessage, и там указано, что прослушиватель onMessage должен запускаться только один раз для каждого события sendMessage.
Будем благодарны за любую помощь.
popup.html
Практика обмена сообщениями Практика обмена сообщениями content.js
chrome.runtime.onMessage.addListener( функция (запрос, отправитель, sendResponse) { console.log('сообщение получено') console.log(запрос); } ); popup.js
var messageButton = document.querySelector("#send-message"); messageButton.onclick = функция() { chrome.tabs.query({currentWindow: true, active: true}, функция (вкладки) { chrome.tabs.executeScript( tabs[0].id, {файл: "content.js"} ) console.log("отправка сообщения") chrome.tabs.sendMessage(tabs[0].id, «строковое сообщение») }); } background.js
chrome.declarativeContent.onPageChanged.removeRules(undefined, function() { chrome.declarativeContent.onPageChanged.addRules([{ условия: [новый chrome.declarativeContent.PageStateMatcher({ pageUrl: {hostEquals: 'stackoverflow.com'}, })], действия: [новый chrome.declarativeContent.ShowPageAction()] }]); }); manifest.json
{ "name": "Практика отправки сообщений", "версия": "1.0", «manifest_version»: 2, "description": "Простой способ обмена сообщениями с помощью API Chrome", "permissions": ["declarativeContent", "activeTab"], "фон": { "scripts": ["background.js"], «постоянный»: правда }, "page_action": { "default_popup": "popup.html", "scripts": ["content.js"], "соответствует": ["http://*/*","https://*/*"] } }
Мобильная версия