javascript - 我可以在我的电子应用程序中使用两个 ioHook 事件吗?
问题描述
我正在使用 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 Instance 的特定侦听器吗?
谢谢您的帮助。这让我烦恼了好几个小时。
解决方案
没有第一个和第二个,只有一个钩子对象。CommonJS 模块被评估一次,所以ioHook === ioHook2
.
start
开始监听注册的钩子并stop
停止监听它们。
由于iohook
是事件发射器,因此可以在需要时像任何其他事件发射器一样取消订阅侦听器:
ioHook.on('mouseclick', onMouseActivity);
...
ioHook.off('mouseclick', onMouseActivity);
推荐阅读
- javascript - 如何使用 Angular 9 打印多个 PDF
- angular - 通过从 ngTemplateOutlet 传递上下文绑定到 ng-template 中的 ngModel
- java - 断言抛出异常
- python-3.x - Flask 和 SQLAlchemy 的 Column 类型
- laravel - 存储 laravel 中的安全文件
- node.js - 内部/模块/cjs/loader.js:969 抛出错误;^ 错误:找不到模块 'F:\mernbootcamp\harrycodname
- php - 将所有 url 替换为 PHP 中的链接
- android - 我想删除 Firebase 存储文件夹中的所有文件
- python - 如何在python输入中使用两个参数?
- android - Android 11 - 无线 ADB 配对 - Windows 机器