javascript - 是否保证在 `touchend` 之后、`touchend` 的事件处理程序可以运行之前触发`click` 事件?
问题描述
有一个 Chrome 错误在click
之后不会触发touchend
:https ://bugs.chromium.org/p/chromium/issues/detail?id=1141207#c10
我想模拟点击使用dispatchEvent
:
let timer: number | null = null;
window.addEventListener('touchend', event => {
if (timer) {
clearTimeout(timer);
}
timer = window.setTimeout(() => {
event.target?.dispatchEvent(new Event('click', {
bubbles: true,
cancelable: true,
}));
}, 0);
});
window.addEventListener('click', () => {
if (timer) {
clearTimeout(timer);
}
});
我假设在单击处理程序运行之前(如果发生单击事件),超时回调是不可能运行的。有了这个假设,我可以将超时延迟设为 0。如果这个假设是错误的,那么我需要更长的延迟,可能是 1-2 帧。click
保证在 , before 的事件处理程序运行之后立即touchend
触发touchend
?
在那儿
解决方案
推荐阅读
- powershell - 管道记录失效
- java - 如何在 Unity/C# 服务器和 Android/Java 客户端之间创建 Socket 连接?
- isabelle - 在 Isabelle 中证明语义函数的可达状态集是有限的
- python - 自动编码器输出尺寸与输入尺寸不同
- scala - 表达式 'id' 既不存在于 group by 中,也不是聚合函数
- sql - 根据其他列的特定规则选择一对行值
- python-3.x - Flask,Python错误:在纯python上显示真实列表,在html中显示内存地址
- php - 如何通过在 PHP 中通过引用传递变量来存储变量?
- css - 将 Bootstrap Select 内容的内容约束到其容器受约束的列
- c# - 不等待所有任务是否安全