Как сохранить работу (вкл/выкл) расширение в браузере после перезагрузки страницы

85
06 февраля 2022, 05:40

Чтобы когда плагин включен все работало даже после перезагрузки страницы и отменял изменения после выключения

Код из background.js

var toggle = false;
chrome.browserAction.onClicked.addListener(function(tab) {
    toggle = !toggle;
    if(toggle){
        chrome.browserAction.setIcon({path: "eraser_on.png", tabId:tab.id});
        chrome.tabs.executeScript(tab.id, {file:"e.js"});
    }
    else{
        chrome.browserAction.setIcon({path: "eraser.png", tabId:tab.id});
        chrome.tabs.executeScript(tab.id);
    }
});

Код из manifest.json

{
   "background": {
      "persistent": false,
      "scripts": [ "background.js" ]
   },
   "browser_action": {
      "default_icon": "eraser.png",
      "default_title": "Erases annoying elements."
   },
   "description": "Erases annoying elements.",
   "icons": {
      "128": "eraser.png"
   },
   "manifest_version": 2,
   "name": "Eraser",
   "permissions": [ "activeTab", "storage" ],
   "version": "1.0.5"
}

Код из e.js

document.getElementsByClassName('-rep')[0].innerText="+100500";
Answer 1

Это только для примера, там многое нужно дорабатывать

Пока не удалил, тут весь пример для подключения https://yadi.sk/d/Nr-CSw4JjbLhvw

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

// Для примера будем подключать скрипт, только по принудительному разрешению
//  и только для тех вкладок, где оно уже было разрешено
// Tут храним вкладки
const tabs = [/* id */]
// Прослеживает за изменениями вкладок
chrome.tabs.onUpdated.addListener(function (tabId) {
  // если скрипт уже был подключен
  if (tabs.includes(tabId)) {
    chrome.browserAction.setIcon({ path: "on.png", tabId: tabId })
    chrome.tabs.executeScript(tabId, { file: "page.js" });
  }
  else {
    chrome.browserAction.setIcon({ path: "off.png", tabId: tabId })
  }
})
// Это отвечает за активацию
chrome.browserAction.onClicked.addListener(function (tab) {
  // если не было включено
  let ind = tabs.indexOf(tab.id)
  if (ind === -1) {
    chrome.browserAction.setIcon({ path: "on.png", tabId: tab.id })
    chrome.tabs.executeScript(tab.id, { file: "page.js" })
    // запоминаем
    tabs.push(tab.id)
  }
  else {
    tabs.splice(ind)
    chrome.browserAction.setIcon({ path: "off.png", tabId: tab.id })
  }
})
READ ALSO
Рекурсия в функции draw

Рекурсия в функции draw

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

95
Исключить ненужные значения при поиске

Исключить ненужные значения при поиске

Имеется рабочий код, который получает html-данные с помощью ajax

78