Расширение Chrome: вставьте CSS один раз на вкладку - PullRequest
0 голосов
/ 07 мая 2019

У моего расширения есть кнопка, которая вставляет таблицу стилей с insertCSS. Когда они снова нажимают кнопку, она снова вводит, вызывая перекрашивание. Как я могу лучше всего предотвратить это?

Мое текущее решение: сохранить массив в фоновом скрипте с каждым tabId, в который вставлен CSS. Я удаляю tabId из массива, когда вкладка выгружается. Работает нормально, но, кажется, это может быть проще. Например. window.insertedCSS = true, но выполнение этого из фонового скрипта влияет на все вкладки.

1 Ответ

0 голосов
/ 07 мая 2019

Вы можете использовать скрипт содержимого, чтобы проверить, был ли CSS-код уже внедрен, перед его фактическим внедрением, например:

function myButtonClicked(){
    chrome.tabs.executeScript({code:`
        (function(){
            if (window.insertCSS === true) return false; //if already inserted return false;
            window.insertCSS = true;            //if not, set the page's variable and return it
            return true;
        })();
    `}, function (result) {
        if (result[0]) {  //if CSS was not inserted, insert it.
           chrome.tabs.insertCSS({file:'myCSS.css'});
        }
    });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...