Chrome扩展程序:如何有条件地阻止和取消阻止请求?

时间:2019-08-09 11:42:10

标签: javascript google-chrome-extension

我想有条件地为请求块添加和删除侦听器,但是当我删除侦听器时,我会遇到无限循环,并且该站点将不会加载anmyore。我正在使用存储设备和一个按钮将状态设置为false,然后将监听器设置为true,如果设置为false,则应删除监听器。

chrome.storage.onChanged.addListener(function (changes, namespace) {
  for (var key in changes) {
    var storageChange = changes[key];
    console.log('Storage key "%s" in namespace "%s" changed. ' +
      'Old value was "%s", new value is "%s".',
      key,
      namespace,
      storageChange.oldValue,
      storageChange.newValue);
  }

  chrome.storage.sync.get('status', function (data) {
    chrome.webRequest.onBeforeRequest.addListener(
      removeJS,
      {
        urls: ["https://devtest.com*"],
        types: ["script"]
      },
      ["blocking"]);

      function removeJS() {
        if (data.status === true) {
          return {
            cancel: true,
          }
        }
      }

      if (data.status === false) {
        chrome.webRequest.onBeforeRequest.removeListener(removeJS);
      }
    });
  });

我不知道我是否正确引用了回调。也许是问题所在,但我已经尝试了很多解决方案。

0 个答案:

没有答案