Javascript 如何在chrome扩展中更新onBeforeRequest事件侦听器?
我有一个扩展,在后台页面中有以下事件侦听器Javascript 如何在chrome扩展中更新onBeforeRequest事件侦听器?,javascript,google-chrome-extension,Javascript,Google Chrome Extension,我有一个扩展,在后台页面中有以下事件侦听器 chrome.webRequest.onBeforeRequest.addListener( function(details){ if ( ... details.url is in ArrayOfURLs ... ){ ... do stuff ... } }, { urls: ["<all_urls>"], types: ["m
chrome.webRequest.onBeforeRequest.addListener(
function(details){
if ( ... details.url is in ArrayOfURLs ... ){
... do stuff ...
}
}, {
urls: ["<all_urls>"],
types: ["main_frame"]
}, ["blocking"]
);
当我从ArrayFurls数组中添加/删除项时,有没有办法更新事件侦听器?通常的做法是删除旧的处理程序并添加新的处理程序
function requestHandler(details){
/* ... do stuff ... */
}
function setListener(ArrayOfURLs) {
chrome.webRequest.onBeforeRequest.removeListener(requestHandler);
chrome.webRequest.onBeforeRequest.addListener(
requestHandler,
{ urls: ArrayOfURLs, types: ["main_frame"] },
["blocking"]
);
chrome.webRequest.handlerBehaviorChanged();
}
最后一个调用是必需的,因为Chrome缓存了规则,但它是。我认为关于规则和动态分配规则的部分可能会引起您的兴趣:@gpgekko规则系统可以调用的操作数量非常有限<代码>declarativeWebRequest提供所需操作的API不稳定,并且没有时间表提供。太好了,不会经常调用它,所以应该可以。谢谢
function requestHandler(details){
/* ... do stuff ... */
}
function setListener(ArrayOfURLs) {
chrome.webRequest.onBeforeRequest.removeListener(requestHandler);
chrome.webRequest.onBeforeRequest.addListener(
requestHandler,
{ urls: ArrayOfURLs, types: ["main_frame"] },
["blocking"]
);
chrome.webRequest.handlerBehaviorChanged();
}