Javascript Chrome扩展代码,用于打开我的扩展(&;在弹出窗口中关闭

Javascript Chrome扩展代码,用于打开我的扩展(&;在弹出窗口中关闭,javascript,html,google-chrome-extension,manifest.json,Javascript,Html,Google Chrome Extension,Manifest.json,我正在构建我的第一个chrome扩展,我几乎完成了这件事!但是,我在最后一部分遇到了困难,那就是创建一个简单的html切换来暂时禁用扩展。基本上,它的功能类似于广告拦截器,但它不会阻止广告,而是阻止网站并将其重定向到特定的URL 下面是我用来尝试这样做的代码,但出于某种原因,它将切换启用禁用,但不会关闭重定向。该应用程序的功能完美地工作,现在我只想能够打开和关闭它 manifest.json { "manifest_version": 2, "name": "Purge",

我正在构建我的第一个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"]}
}
popup.html

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

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

您可以切换布尔值
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"]);

您从未在background.jsI中检查变量
enabled
。我会和你的变量保持一致。对于这两种情况,使用
background.enabled
是更好的选择。另外,我会使用标准的Javascript格式,这样更清晰。cli中还有一个
--fix
标志,因此它将自动格式化文件。禁用时最好删除侦听器。当然,你需要一个命名的函数。谢谢你,这个函数成功了!还感谢您提供信息,说明为什么它对将来的学习不起作用!:)