我正在使用iohook节点库来侦听全局的鼠标和键盘事件。
实际上,我需要两个库实例来处理某些逻辑。 现在我的代码看起来像这样
const ioHook = require('iohook');
const ioHook2 = require('iohook');
ioHook.start();
ioHook.on('mouseclick', this.onMouseActivity);
ioHook2.start();
ioHook2.on('mouseclick', this.onMouseActivity2);
现在,执行完一些逻辑后,我需要停止第一个侦听器。 因此,我执行以下代码,
ioHook2.stop();
但是,这停止了我所有的钩子。 我的预期结果是第一个ioHook不应该关闭并正常工作。
这是因为两者使用的事件发射器相同吗?
像mouseclick
,keypress
,mousemove
等。?
如果是这样,我可以删除特定于ioHook实例的特定列表器吗?
感谢您的帮助。这让我烦了几个小时。
答案 0 :(得分:0)
没有第一个和第二个,只有一个钩子对象。 CommonJS模块只计算一次,因此ioHook === ioHook2
。
start
开始监听已注册的钩子,stop
停止监听它们。
由于iohook
是事件发射器,因此可以在需要时与其他任何事件发射器一样取消订阅侦听器:
ioHook.on('mouseclick', onMouseActivity);
...
ioHook.off('mouseclick', onMouseActivity);