Как динамически изменить CSS-файл манифеста для расширения Chrome или как правильно включить / выключить таблицу стилей? - PullRequest
0 голосов
/ 10 марта 2012

Ответвление за мой Другой вопрос , пользователь успешно заставил меня обслуживать таблицу стилей, но это неправильный путь; это не то, что мне нужно было сделать.

Итак, я сформулировал более точный вопрос:

По сути, вы можете сделать расширение для постоянной модификации веб-страницы, определив скрипт содержимого в manifest.json.

Мне нужна возможность включать или выключать по нажатию кнопки в popup.html.

Ответ на другой мой вопрос, на который я ссылался, позволяет мне только обслуживать таблицу стилей, но он удаляется снова, как только страница перезагружается.

Я хочу в основном установить для расширения возможность постоянного включения таблицы стилей для веб-страницы или отключить ее, нажав кнопку переключения, расположенную на значке браузера popup.html.

Смотрите скриншот:

popup screenshot



Я думаю, что мне нужно, чтобы кнопка изменила настройку в расширении , которая либо включит, либо отключит скрипт содержимого таблицы стилей CSS или swap с другим скриптом содержимого таблицы стилей CSS .

Надеюсь, я прояснил это достаточно, чтобы понять.

1 Ответ

1 голос
/ 11 марта 2012

Почему вы хотите заново изобрести колесо?

Взгляните на Стильный для Chrome , менеджер UserScript (из Стильный для Firefox).

Если вы все еще хотите продолжить разработку такого расширения, можно использовать следующие методы, помимо того, который я описал в моем предыдущем ответе :

  1. chrome.tabs.onUpdated - обнаружение изменений состояния вкладки (поместите этот код на фоновую страницу ):

    chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {
        chrome.tabs.executeScript(tab.id, {code:
           'document.documentElement.setAttribute("RWchooseStyle", "style1.css");'
        });
        // myscript.js defined in https://stackoverflow.com/a/9647059
        chrome.tabs.executeScript(tab.id, {file: 'myscript.js'});
    });
    
  2. localStorage - Для постоянства (чтобы настройки можно было «запомнить» в вашем добавочном номере):
    localStorage.getItem('name') для получения настроек, localStorage.setItem('name','value') для установки настроек.

    Можно запомнить только строки, поэтому string = JSON.stringify(some_variable) и original_variable = JSON.parse(string) можно использовать для сохранения чисел, массивов и других примитивов.

...