我正在尝试使用chrome.webRequest.onBeforeRequest.addListener()根据用户设置(保存在chrome.storage中)重定向某些URL。
我知道存储操作是异步的,但是我不能全神贯注于如何将其与事件侦听器结合使用,因为两者都只为它们的回调函数接受一个参数,而没有其他参数。侦听器仅接受请求对象,storage.sync.get仅获取包含检索到的数据的对象。
由于使用存储get函数无法返回任何内容,因此应该如何将这两者混合使用?
我尝试将事件侦听器放入storage.sync.get回调函数中,也尝试使用几种回调结构,但是我没有主意。
const urlfilter = {urls: "some_urls", types: ['main_frame', 'sub_frame']}
const opt_extraInfoSpec = ["blocking"];
chrome.storage.sync.get('somedata', function(data) {
chrome.webRequest.onBeforeRequest.addListener(
(request) => {
if (data.somedata) {
let query = data.somedata;
return {redirectUrl: request.url + query};
}
},
urlfilter,
opt_extraInfoSpec
);
});
最后一个示例有效,但是仅被调用一次,因此在存储更改时不响应。而且我也不知道这是否是正确的方法...我在这里阅读的所有解决方案都是针对不同的存储用例的。