eva*_*vid 7 javascript google-chrome google-chrome-extension
所以我正在查看CatBlock扩展示例的示例代码chrome.webrequest,我看到它打开了监听器
chrome.webRequest.onBeforeRequest.addListener
Run Code Online (Sandbox Code Playgroud)
因此,当我想要关闭它时,我能做到吗
chrome.webRequest.onBeforeRequest.removeListener?
如果没有,我将如何摆脱它?
我认为这类似于Javascript的本机事件监听器,但我知道Chrome的扩展中使用的那个有点不同.
谢谢!
evamvid
Xan*_*Xan 16
首先,这里提供完整的文档.
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) { /* ... */ });
Run Code Online (Sandbox Code Playgroud)
要删除侦听器,请removeListener使用相同的函数引用进行调用.在匿名函数中,这显然是不可能的.因此,只有前两个可以删除:
chrome.webRequest.onBeforeRequest.removeListener(callback_named);
chrome.webRequest.onBeforeRequest.removeListener(callback_variable);
Run Code Online (Sandbox Code Playgroud)
请注意,您还可以测试特定的侦听器:
if(chrome.webRequest.onBeforeRequest.hasListener(callback_named)){
// callback_named is listening
}
Run Code Online (Sandbox Code Playgroud)
或者,测试是否有听众:
if(chrome.webRequest.onBeforeRequest.hasListeners()) {
// something is listening
}
Run Code Online (Sandbox Code Playgroud)
1某些API允许在回调参数之后进行偶数过滤和/或其他选项.实际上,webRequestAPI就是这样的实例之一,这使得上面的示例不完全正确(过滤器对于此API是必需的).但他们回答了问题的实质.
| 归档时间: |
|
| 查看次数: |
4762 次 |
| 最近记录: |