Javascript chrome webrequest api URL数组?

Javascript chrome webrequest api URL数组?,javascript,google-chrome-extension,websocket,Javascript,Google Chrome Extension,Websocket,下面是一个非常简单的chrome扩展的代码,它可以阻止手动指定的网站 chrome.webRequest.onBeforeRequest.addListener(function(details) { return {cancel: true}; }, {urls: ["*://*.google.com/*", "*://*.facebook.com/*"]}, ["blocking"]); 我想知道是否有可能使这个url列表等于一个网站数组,如果有,语法是什么。我的目标是从web

下面是一个非常简单的chrome扩展的代码,它可以阻止手动指定的网站

chrome.webRequest.onBeforeRequest.addListener(function(details) { 
    return {cancel: true}; 
},
{urls: ["*://*.google.com/*", "*://*.facebook.com/*"]},
["blocking"]);
我想知道是否有可能使这个url列表等于一个网站数组,如果有,语法是什么。我的目标是从websocket服务器检索网站列表,然后让我的chrome扩展阻止它们。这是我的密码

var testSocket = new WebSocket("http://www.example.com/socketserver");
testSocket.onmessage = function (e) {
     var websites = e.split(',');
     console.log(e);
}
我不熟悉javascript,但我相信这应该允许我连接到“example.com”websocket服务器,检索由逗号分隔的URL字符串,并将该字符串拆分为一个名为“websites”的数组

假设上面的代码与我刚才描述的一样(如果没有,请告诉我),我如何将chrome扩展中的“URL”设置为“网站”?

  • 使webRequest侦听器成为全局函数,并在收到列表后重新注册它
  • 另外,在chrome.storage.local中保存/加载列表


@您能解释removeListener的语法吗?对吗?另外,如何使侦听器成为全局函数并将其注册到onmessage回调?我只是从onmessage函数中调用addListener吗?哦,哎呀,我看到你刚刚在下面贴了,我想是nvm吧!
function blockUrl(details) { 
  return {cancel: true}; 
}

// load the list on extension startup
chrome.storage.local.get('urls', data => {
  if (data.urls && data.urls[0]) {
    chrome.webRequest.onBeforeRequest.addListener(blockUrl, data, ['blocking']);
  }
});

testSocket.onmessage = function (e) {
  const urls = e.split(',');
  chrome.storage.local.set({urls});
  chrome.webRequest.onBeforeRequest.removeListener(blockUrl);
  if (urls[0]) {
    chrome.webRequest.onBeforeRequest.addListener(blockUrl, {urls}, ['blocking']);
  }
};