Можно ли включить / выключить расширение из всплывающего окна без вкладки chrome: // extensions? - PullRequest
1 голос
/ 22 апреля 2019

Я собираюсь закончить расширение, и все, что мне нужно, - это включить / выключить мой файл popup.html, который будет управлять тем же переключателем на вкладке «chrome: // extensions». Возможно ли это?

Вот что я сделал: popup.html:

// on/off switch
<div class="center custom-control custom-switch">
   <input type="checkbox" class="custom-control-input" id="customSwitch1">
   <label class="custom-control-label" for="customSwitch1">PAUSE / START</label>
</div>

popup.js:

var ss = document.getElementById("customSwitch1");

$(ss).click(function() {
  if($(ss).prop("checked")){
    chrome.runtime.sendMessage({isOn: "true"}, function(response) {
      console.log(response.farewell);
    });
  }
  else{
    chrome.runtime.sendMessage({isOn: "false"}, function(response) {
      console.log(response.state);
    });
  }
});

background.js:

chrome.runtime.onMessage.addListener(
  function(request, sender, sendResponse) {
    console.log(sender.tab ?
                "from a content script:" + sender.tab.url :
                "from the extension");
    if (request.isOn == "true")
      sendResponse({state: "true"});
    if (request.isOn == "false")
      sendResponse({state: "false"});
});

Это то, что я хочу контролировать

Ответы [ 2 ]

1 голос
/ 23 апреля 2019

Вы можете, потенциально, отключить собственное расширение из кода. На самом деле, вы можете даже удалить его.

См. chrome.management API о том, как это сделать.

Однако это лишило бы вас возможности включить его обратно.

  1. Если вы пытаетесь управлять другим расширением, это правильный подход.
    Вам потребуется разрешение "management", чтобы повлиять на другие расширения.

  2. Если вы пытаетесь управлять собственным поведением, вам необходимо реализовать это в логике расширения.

    /* Pseudocode */
    function someEventHandler() {
      if (state.enabled) {
        // Do stuff
      } else {
        console.log("Functionality disabled, ignoring SomeEvent");
      }
    }
    

    Обратите внимание, что для сохранения этого параметра вы, вероятно, захотите сохранить его где-нибудь, сохранившем перезагрузку расширения; chrome.storage API , вероятно, ваш лучший выбор.

1 голос
/ 23 апреля 2019

Вы можете оставить расширение включенным в Chrome и позволить всплывающему окну контролировать паузу / запуск только того, над чем работает ваше расширение, и не отключать все расширение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...