Para un experimento de investigación, estoy tratando de retrasar la interfaz de usuario (crear retraso) en los navegadores móviles, ya que estoy investigando los efectos de la latencia de la interfaz de usuario en las aplicaciones web. Por ejemplo, si un usuario se desplaza, la acción de desplazamiento solo ocurre (p. ej.) 50 ms después.
window.addEventListener() , y luego window.dispatchEvent() después de un cierto retraso con setTimeout() . Sin embargo, en el caso del desplazamiento, este no desplazó la página después de despachar el evento manualmente. Desplazarse con window.scrollBy() funciona, pero activa su propio evento.
window.addEventListener('wheel', event => { console.log(event) if (event.cancelable) { event.preventDefault() event.stopImmediatePropagation() setTimeout(() => { let newEvent = new WheelEvent('wheel', { deltaX: event.deltaX, deltaY: event.deltaY, deltaZ: event.deltaZ, cancelable: false, }) window.dispatchEvent(newEvent) // window.scrollBy({ top: 20 }) }, DELAY) } }, { capture: true, passive: false, }) Esto funciona para eventos de rueda, pero no para eventos táctiles. ¿Hay alguna manera de generalizar este comportamiento para todos los MouseEvents? Idealmente, me gustaría procesar todos los DOM MouseEvent , como una especie de middleware.