如何将Chrome.storage与chrome.WebRequest.onBeforeRequest侦听器结合在一起?

时间:2019-04-04 22:58:51

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

我正在尝试使用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
  );
});

最后一个示例有效,但是仅被调用一次,因此在存储更改时不响应。而且我也不知道这是否是正确的方法...我在这里阅读的所有解决方案都是针对不同的存储用例的。

0 个答案:

没有答案