Расширение Google Chrome: включение / выключение режима

#google-chrome #google-chrome-extension

#google-chrome #google-chrome-extension

Вопрос:

У меня есть расширение Google Chrome, доступное с помощью кнопки. Предполагается, что расширение должно что-то «запускать», а затем, когда на него нажимают снова, оно должно «останавливаться». Таким образом, оно должно распознавать свое текущее состояние (а также отображать различные всплывающие окна в зависимости от состояния).

Есть ли способ отслеживать этот глобальный флаг или переменную?

Мой текущий manifest.json, который просто показывает простое всплывающее окно (диалоговое окно для состояния # 1):

 {
  "name": "Test",
  "version": "1.0",
  "description": "Test",
  "manifest_version": 2,
  "browser_action": {
    "default_icon": "Test.png", 
    "default_popup": "popup1.html"
  }
}
  

Файл «popup1.html «это просто страница с кнопкой формы «ОК». При нажатии кнопки OK для этой глобальной переменной состояния будет установлено значение ON, а следующее нажатие кнопки расширения приведет к запуску другой страницы. Спасибо

Комментарии:

1. Да, устранено. Спасибо

Ответ №1:

Глобальная переменная будет повторно инициализирована при попытке открыть новое всплывающее окно. «localStorage» позволяет расширению сохранять данные на клиентском устройстве. Теперь оно поддерживает только данные сопоставления ключ-значение, например localStorage.currentState = «start».

Вы можете использовать localStorage для сохранения состояния кнопки и соответствующего обновления статуса кнопки, когда пользователь открывает всплывающее диалоговое окно.

HTML

 <!--default status is start-->
<button id="toggle-btn">ON</button>
  

JS

 $(function(){
    //default value is "start"
    var currentState = localStorage.currentState || "start";
    //cache button DOM element reference
    var $toggleBtn = $("#toggle-btn");

    //update button status
    if(currentState==="stop"){
        $toggleBtn.text("OFF");
    }

    //register button click handler
    $toggleBtn.click(function(){
        if(currentState==="start"){
            $toggleBtn.text("OFF");
            localStorage.currentState="stop";
        }
        if(currentState==="stop"){
            $toggleBtn.text("ON");
            localStorage.currentState="start";
        }
    });
});
  

Кстати, вы можете использовать инструмент разработки браузера (на вкладке ресурсов), чтобы проверить, сохранены ли данные должным образом.

Комментарии:

1. localstorage будет использоваться только word для каждого домена и не сохранит состояние переключения глобально в браузере.