Javascript Chrome扩展删除侦听器不';行不通
我正在构建我的第一个Chrome扩展,这是一个困扰我好几天的问题 当扩展打开时,它会添加一个侦听器并阻止请求,但当它关闭时,它应该删除侦听器(而不是阻止请求)。问题是,removeListener由于某种原因无法工作Javascript Chrome扩展删除侦听器不';行不通,javascript,jquery,google-chrome,google-chrome-extension,Javascript,Jquery,Google Chrome,Google Chrome Extension,我正在构建我的第一个Chrome扩展,这是一个困扰我好几天的问题 当扩展打开时,它会添加一个侦听器并阻止请求,但当它关闭时,它应该删除侦听器(而不是阻止请求)。问题是,removeListener由于某种原因无法工作 chrome.storage.local.get(["button"], function(result) { // let extensionState = result.button; let blocksRequestsFunction = fun
chrome.storage.local.get(["button"], function(result) {
//
let extensionState = result.button;
let blocksRequestsFunction = function(details) {
if (extensionState === "on") {
console.log("blocking:", details.url);
return { cancel: true };
} else {
console.log("it's off");
chrome.webRequest.onBeforeRequest.removeListener(
blocksRequestsFunction
);
return { cancel: true };
}
};
function blocksAds() {
chrome.webRequest.onBeforeRequest.addListener(
blocksRequestsFunction,
{ urls: ["*://*.adjaranet.com/"] },
["blocking"]
);
}
blocksAds();
});
});
正如我已经解释过的,您需要使该函数引用成为全局的。将blocksRequestsFunction语句移动到任何函数之外,例如,将其作为脚本中的第一个语句。返回{cancel:true};在if和else块中,可能都应该返回false。我移动了函数,但在函数中,我有另一个变量“extensionState”。