带有动态过滤器的onBeforeRequest事件

时间:2018-01-30 12:04:04

标签: javascript firefox-webextensions browser-addons

我正在开发一个浏览器扩展程序,根据客户需求阻止对特定网址的调用。

需要阻止的网址传递为“localStorage”参数。

这是我的扩展程序代码:

function logURL(requestDetails) {
    console.log("Loading: " + requestDetails.url);
    return {cancel: true};
}

browser.webRequest.onBeforeRequest.addListener(
    logURL,
    {urls: (localStorage.getItem('block_urls') ? localStorage.getItem('block_urls') : ["https://default/default"] )},
    ["blocking"]
);

我期望发生的是,在每个请求之前,将从localStorage读取URL并相应地阻止。如果localStorage为null,我有一个默认的url模式(基本上什么都不做)。

实际发生的是,过滤器参数(urls)只被调用一次(加载扩展名时)而不是每个请求之前。

有没有办法动态更改此事件的过滤器?

感谢帮助者。

1 个答案:

答案 0 :(得分:1)

有两种方法可以做到这一点:

  • 听取每个可能的网址,并使用简单的“if”语句过滤掉您自己需要的事件
  • 删除事件侦听器并在browser.storage.local的内容更改时重新附加事件侦听器