是否可以在没有chrome:// extensions选项卡的情况下从弹出窗口打开/关闭扩展程序?

问题描述 投票:1回答:2

我即将完成扩展程序,我需要的是我的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"});
});

This is what I want to control

javascript jquery google-chrome-extension
2个回答
1
投票

您可以在Chrome中启用扩展程序,并让弹出窗口控制扩展程序正在处理的暂停/开始,而不是禁用整个扩展程序。


1
投票

您可以从代码中禁用自己的扩展。实际上,您甚至可以卸载它。

请参阅chrome.management API了解如何操作。

但是,这将使您无法启用它。

  1. 如果您正在尝试控制另一个扩展,那么这是一种有效的方法。 您需要"management"权限才能影响其他扩展程序。
  2. 如果您试图控制自己的行为,则需要在扩展逻辑中实现它。 /* Pseudocode */ function someEventHandler() { if (state.enabled) { // Do stuff } else { console.log("Functionality disabled, ignoring SomeEvent"); } } 请注意,要保留此设置,您可能希望将其保存在扩展重启后的某个位置; chrome.storage API可能是你最好的选择。
© www.soinside.com 2019 - 2024. All rights reserved.