繁体   English   中英

事件监听器函数中的chrome.webrequest

[英]chrome.webrequest in a event listener function

单击扩展中的开始按钮时,我正在尝试启动webrequest侦听器。 但是,它不起作用。 当我在函数外部添加webrequest侦听器时,它可以工作。 这是我的代码:

的manifest.json

{
  "manifest_version": 2,

  "name": "SimplyFocused",
  "description": "This extension will stop procrastination.",
  "version": "1.0",
  "options_page": "options.html",

  "browser_action": {
    "default_icon": "icon.png",
    "default_popup": "popup.html"
  },
  "permissions": [
    "webRequest",
    "webRequestBlocking",
    "<all_urls>"
  ],
  "background": {
    "scripts": ["background.js"]
  }
}

popup.html

<!doctype html>
<html>
  <head>
    <title>Simply Focused</title>
    <link rel="stylesheet" href="bootstrap.min.css">
    <link rel="stylesheet" href="style.css">
    <script src="background.js"></script>
    <script src="popup.js"></script>
  </head>
  <body id="popup">
      <button class="btn btn-default" id="start">Start</button>
  </body>
</html>

popup.js

    document.addEventListener('DOMContentLoaded', function () {
        document.getElementById('start').addEventListener('click', startBlock);
    });

background.js

 if (localStorage.getItem("blocked") == null) {
        localStorage.setItem("blocked", JSON.stringify([]));
    }

    function startBlock() {
        var blockedSites = ["*://www.yahoo.com/*"];
        console.log(blockedSites);
        chrome.webRequest.onBeforeRequest.addListener(
            function(details){console.log(details); return {cancel: true};},
            {urls: ["*://www.yahoo.com/*"]},
            ["blocking"]);
    }

    // chrome.webRequest.onBeforeRequest.addListener(
    //  function(details){console.log(details); return {cancel: true};},
    //  {urls: ["*://www.yahoo.com/*"]},
    //  ["blocking"]);

当我取消对background.js中的注释部分的注释时,阻止起作用。 我猜想这与webrequest甚至没有依据有关,但我不确定。 谢谢!

弹出窗口和背景页面不同。 尝试使用chrome.extension.getBackgroundPage()方法访问背景的startBlock函数:

document.addEventListener('DOMContentLoaded', function () {
    document.getElementById('start').addEventListener('click', function() {
        chrome.extension.getBackgroundPage().startBlock();
    });
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM