Задать вопрос
alex-saratov
@alex-saratov

Как правильно оповещать контент-скрипты об изменении настроек расширения браузера?

Имеется расширение у которого background.js занимается хранением настроек и обработкой подготовленных скриптом content.js данных. Все работает и вроде общается между собой, но при написании скрипта изменения настроек расширения возникли проблемы.
Как правильно сообщить всем вкладкам, на которых функционирует content.js, что настройки поменялись и что их необходимо перечитать?

Сообщения от background.js не доходят до вкладок.
Пробовал отправлять всем вкладкам информацию, чтобы они перечитали настройки.
chrome.tabs.query({active: false, currentWindow: false}, function(tabs) {
  chrome.tabs.sendMessage(tabs[0].id, {command: "extEvSettingsUpdate"});
});

Понимаю, что ответ может быть на поверхности, но я его пока не вижу.

Особо смекалистых просьба не кидать ссылку на https://developer.chrome.com/extensions.

P.S. Все заработало. Ошибка в том, что использовал параметры {active: false, currentWindow: false} при выборе вкладок. При пустом значении выбираются все вкладки.
Спасибо за подсказку

рабочее решение: background.js
chrome.tabs.query({}, function(tabs) {
			for (var i = 0; i < tabs.length; i++) {
				chrome.tabs.sendMessage(tabs[i].id, {
					command : "extEvSettingsUpdate"
				});
			}
		});

и content.js из ответа Алексей Ярков Алексей Ярков
  • Вопрос задан
  • 183 просмотра
Подписаться 2 Оценить Комментировать
Решения вопроса 1
yarkov
@yarkov Куратор тега JavaScript
Помог ответ? Отметь решением.
//content.js

chrome.extension.onMessage.addListener(function(request, sender, callback){
    if (!!request && !!request.command) {
        if (request.command === "extEvSettingsUpdate") {
            // your actions
        }
    }
});
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы