繁体   English   中英

`chrome.webRequest.onBeforeRequest.removeListener`? - 如何停止chrome Web侦听器

[英]`chrome.webRequest.onBeforeRequest.removeListener`? — How to stop a chrome web listener

所以,我被检查出来的CatBlock扩展样本示例代码chrome.webrequest ,我看到它打开听者

chrome.webRequest.onBeforeRequest.addListener

因此,当我想要关闭它时,我能做到吗

chrome.webRequest.onBeforeRequest.removeListener

如果没有,我将如何摆脱它?

我认为这类似于Javascript的本机事件监听器,但我知道Chrome的扩展中使用的那个有点不同。

谢谢!

evamvid

首先, 这里提供完整的文档。

addListener函数通常1有一个参数,该函数将在事件触发时作为回调执行。

可以传递命名函数,变量中引用的函数或匿名函数:

function callback_named (parameters) { /* ... */ }

callback_variable = function (parameters) { /* ... */ };

chrome.webRequest.onBeforeRequest.addListener(callback_named);
chrome.webRequest.onBeforeRequest.addListener(callback_variable);
chrome.webRequest.onBeforeRequest.addListener(function (parameters) { /* ... */ });

要删除侦听器,请使用相同的函数引用调用removeListener 在匿名函数中,这显然是不可能的。 因此,只有前两个可以删除:

chrome.webRequest.onBeforeRequest.removeListener(callback_named);
chrome.webRequest.onBeforeRequest.removeListener(callback_variable);

请注意,您还可以测试特定的侦听器:

if(chrome.webRequest.onBeforeRequest.hasListener(callback_named)){
  // callback_named is listening
}

或者,测试是否有听众:

if(chrome.webRequest.onBeforeRequest.hasListeners()) {
  // something is listening
}

1某些API允许在回调参数之后进行偶数过滤和/或其他选项。 实际上, webRequest API就是这样的实例之一,这使得上面的示例不完全正确(过滤器对于此API是必需的)。 但他们回答了问题的实质。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM