我将事件监听器添加到我的输入中:
['input', 'keypress', 'keyup', 'keydown'].forEach(eventName => {
document.getElementById('my-input').addEventListener(eventName, (e) => {
// handle eventName for input
});
});
我希望在执行所有已注册事件的回调后执行一些代码。 有可能的?如果是,请解释如何做到这一点
修改
但我不知道会触发哪些事件。 例如,以用户为中心的输入,然后按下Esc,在这种情况下,只会触发keyup和keydown事件。
编辑2: 我的任务是处理页面上的用户交互。 我应该处理用户之间的交互以及一次特定的交互(关注字段,字符输入,击键),并且在发生这种交互的所有回调之后,我应该执行一些代码。
用户关注inout =>焦点回调被执行
应该执行一些代码
用户按下Esc =>执行keydown和keyup回调
应该执行一些代码
用户在字段中输入符号=>输入,按键,键盘,键控回调被执行
应该执行一些代码
答案 0 :(得分:5)
在所有同步事件完成后立即使用setTimeout
运行函数:
let timeout;
['input', 'keypress', 'keyup', 'keydown']
.forEach(eventName => {
document.getElementById('my-input').addEventListener(eventName, (e) => {
// handle eventName for input
console.log(eventName + ' triggered');
if (timeout) clearTimeout(timeout);
timeout = setTimeout(afterEvents);
});
});
function afterEvents() {
console.log('all event listeners have been triggered');
}
<input id="my-input">