动态更改了RequestFilter for Chrome Extension

时间:2017-11-14 15:39:37

标签: javascript google-chrome google-chrome-extension

我目前正在开发非常简单的Chrome扩展程序,它可以处理对指定网址(白名单)的请求并做一些魔术。

我在* js文件中定义的侦听器很少,如下所示:

chrome.webRequest.onBeforeRequest.addListener(function1, filter,['blocking']);
chrome.webRequest.onBeforeSendHeaders.addListener(function2, filter,['blocking','requestHeaders']);

function1function1是来自同一文件的常规函数​​,它们可以完美地完成工作。

filter是白名单。它是以这种方式在此文件顶部定义的变量:

var filter={"urls": ["url_pattern_1", "url_pattern_2"],
               "types": ["main_frame", "sub_frame", "xmlhttprequest"]};

urls块包含的网址格式比permissions manifest.json处预定义的更多。 直到这个时候一切正常。

当我尝试动态修改filter时,会出现

问题。 我在扩展程序的设置中添加了输入字段,用户可以预先设置应由扩展程序处理的其他URL(仅添加到白名单)。我首先将它们存储在localStorage,然后在其他功能中添加到filter['urls']。我确定它们是在该函数的末尾添加的,但是当我尝试向任何这些URL发送请求时,扩展无效,因为filter['urls']具有在开始时定义的相同状态,修改不是'应用。

所以问题是我如何实现chrome.webRequest侦听器中使用的动态更改过滤器来获取这种白名单逻辑?

P.S。我的主要语言是Java,这是我第一次使用JS和Chrome API,对不起,如果我错过了一些“显而易见的事情”。

0 个答案:

没有答案