具有动态过滤器的 onBeforeRequest 事件



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

需要阻止的 url 作为"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 为空,我有一个默认的 url 模式(基本上什么都不做)。

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

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

感谢帮手。

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

  • 收听每个可能的URL,并使用简单的"if"语句过滤掉您需要的事件
  • 删除事件侦听器,并在 browser.storage.local 的内容发生更改时重新附加事件侦听器

相关内容

  • 没有找到相关文章

最新更新