Код расширения Chrome для включения и выключения моего расширения во всплывающем окне - PullRequest
0 голосов
/ 12 сентября 2018

Я работаю над созданием моего первого расширения Chrome, и я почти закончил!Однако я застрял в последней части, которая создает простой переключатель HTML, чтобы временно отключить расширение.По сути, он работает как блокировщик рекламы, но вместо того, чтобы блокировать рекламу, он блокирует веб-сайты и перенаправляет их на определенный URL-адрес.

Вот код, который я использую, чтобы попытаться сделать это, но по какой-то причине он переключит ВключитьОтключить, но он не отключает перенаправление.Функциональность приложения работает отлично, теперь я просто хочу иметь возможность включать и выключать его.

manifest.json

 {
    "manifest_version": 2,
    "name": "Purge",
    "description": "Why Use Anything But Google?",
    "version": "1.0.0",
    "icons": {"128":"icon_128.png"},
    "browser_action": {"default icon": "icon.png",
    "default_popup": "popup.html"},
    "permissions": ["webRequest", "webRequestBlocking", "http://*/", "https://*/"],
    "background": {"scripts": ["blocked_domains.js", "background.js"]}
}

всплывающее окно.html

<html>
<head>
        <script src="toggle.js"></script>
</head>
<body>
    <h3>PURGE!</h3>
    <input type="button" id="toggle_button" value="Disable" />
    <hr>
</body>
</html>

background.js

var enabled = true;
chrome.webRequest.onBeforeRequest.addListener(
    function(info) {
      var url = "https://www.google.com/";
      return {redirectUrl: url};
    },
    {urls: blocked_domains},
    ["blocking"]);

toggle.js

window.onload = function () {
    function updateLabel() {
        var enabled = chrome.extension.getBackgroundPage().enabled;
        document.getElementById('toggle_button').value = enabled ? "Disable" : "Enable";
    }
    document.getElementById('toggle_button').onclick = function () {
        var background = chrome.extension.getBackgroundPage();
        background.enabled = !background.enabled;
        updateLabel();
    };
    updateLabel();
}

1 Ответ

0 голосов
/ 12 сентября 2018

Ну, вы переключаете логическое значение enabled и кнопку вместе с ним, но вы все равно перенаправляете независимо от значения.

Внутри onBeforeRequest слушатель, проверьте, является ли значение enabled равным true из false, прежде чем принять решение о перенаправлении:

 chrome.webRequest.onBeforeRequest.addListener(
    function(info) {
      if(!enabled)                                           // if the extension is not enabled
        return { cancel: false };                            // don't cancel or redirect

      var url = "https://www.google.com/";
      return { redirectUrl: url };
    },
    {urls: blocked_domains},
    ["blocking"]);
...