【问题标题】:onBeforeRequest event with dynamic filter带有动态过滤器的 onBeforeRequest 事件
【发布时间】:2018-01-30 20:22:28
【问题描述】:

我正在开发一个浏览器扩展程序,它会根据客户的需求阻止对特定 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 并在你的 "logURL" 方法中读取被阻止的 URL...
  • 谢谢。我使用了这个选项并且它有效

标签: javascript firefox-addon-webextensions browser-addons


【解决方案1】:

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

  • 监听每一个可能的 URL 并通过简单的“if”语句过滤掉您自己需要的事件
  • 当 browser.storage.local 的内容发生变化时,移除事件监听器并重新附加事件监听器

【讨论】:

    猜你喜欢
    • 2011-12-14
    • 2014-03-25
    • 2021-03-08
    • 2018-02-03
    • 2019-04-25
    • 2011-04-13
    • 2021-05-11
    • 1970-01-01
    • 2018-12-17
    相关资源
    最近更新 更多