对于我的Chrome扩展程序,我希望具有阻止请求功能。我有一个很大的域列表(~10000),我想使用IndexedDb来存储域列表,但正如我现在所理解的那样-不可能进行异步调用并在请求处理程序中返回结果。我最初的计划是:
function reqHandler(data) {
// async IndexedDb call here
// and return { cancel: true } or { cancel: false } depends on result
}
chrome.webRequest.onBeforeRequest.addListener(
reqHandler,
{ urls: ['<all_urls>'] },
['blocking']);
看起来不可能?处理我的案子的最好方法是什么?如何处理这个大小的域名列表?我认为它太大了,不能作为对象保存在内存中。希望你能告诉我如何处理这个问题。谢谢你
1条答案
按热度按时间ybzsozfc1#
试试这个:
创建JS文件,如BlockUrl.js,并将数组变量放入其中,您将在其中存储URL,如:
在另一个类似Code.js的JS文件中,放入以下代码:
在“manifest.json”中,在header(name,author,version,and that stuff)后面加上:
“content_scripts”部分应该如下所示:(因为“规则”,你必须至少有一个JS文件,如果你没有其他JS文件,请创建一个空文件)
在manifest的末尾:
现在你可以试试。。