Установить функции расширения Chrome (всплывающее окно) для вкладок, которые будут открыты - PullRequest
0 голосов
/ 30 сентября 2019

Я разрабатываю расширение Chrome, которое меняет некоторые функции веб-страниц (например, цвет текста, цвет фона, цвет ссылки), выбирая их во всплывающем окне и применяя их с помощью jQuery или Javascript. Теперь он работает нормально для ActiveTab, когда я открываю всплывающее окно и выбираю цвета, но я хотел бы применить те же функции

  1. для всех вкладок, уже открытых в браузере (не только activeTab)
  2. для всех будущих вкладок, которые я могу открыть во время навигации (например, новая вкладка, которая будет открыта, когда я нажму на ссылку на текущей веб-странице)
  3. наконец сохраняйте эти функции, даже когда браузер закрыт, чтобы установить их один раз, браузер будет снова открыт.

Для пункта 3 я думаю, что я должен использовать API хранилища Chrome , но я не знаю, какой тип и как его использовать. Вместо этого для пунктов 1 и 2 я не знаю, как действовать.

Я поместил выдержку из текущего кода, который я разработал.

Popup.js

function changeBackground(){
    var color = document.getElementById('backC').value;  //color taken by a color picker

    chrome.tabs.query({ active: true, currentWindow: true}, function(tabs) {
        chrome.tabs.sendMessage(tabs[0].id, { type: 'backcolor', bColor: color});
    });
}

ContentScript.js

chrome.runtime.onMessage.addListener(
    function(message, sender, sendResponse) {
        switch(message.type) {

            case "backcolor":
                backgroundColor = message.bColor;
                $("*").css("background-color", message.bColor);
                break;

            default:
                console.error("Unrecognised message: ", message);
        }
    }
);

Если вы можете помочь мне найти некоторые решения для трех пунктов. Спасибо!

1 Ответ

0 голосов
/ 01 октября 2019

Проще говоря, вам нужно сообщить свой контент для запуска. В вашем фоновом скрипте создайте вкладки для активированного слушателя. Убедитесь, что ваш контент-скрипт прослушивает это сообщение и запускает нужный код.

chrome.tabs.onActivated.addListener({
   message: 'UPDATE_CONTENT_MESSAGE'
})
...