w3schools customevent javascript iframe extjs touch extjs5

javascript - w3schools - customevent



Error: no se pudo ejecutar ''dispatchEvent'' en ''EventTarget'' (1)

Encontré una solución sorprendentemente simple: puedes saltear el manejo del evento devolviendo false en el controlador:

touchmove: function(e) { return false; }

Esto hará que la burbuja de desplazamiento suba hasta el navegador y se maneje correctamente. ¿Hay alguna otra restricción a la que tengas que prestar atención?

Si realmente desea volver a enviar el evento, esta es la forma correcta de hacerlo:

window.document.dispatchEvent( new old_event.constructor(old_event.type, old_event) );

Vea también: ¿Cómo clonar o volver a enviar los eventos DOM?

Hace algún tiempo, tuve un problema cuando el desplazamiento en dispositivos táctiles ya no funcionaba cuando mi aplicación ExtJS 5 estaba integrada en un IFrame (mira este hilo ).

He resuelto esto anulando algunas cosas del marco Ext (ver la solución ).

Un paso de la solución fue enviar un evento touchmove al documento en sí (el marco impide el manejo predeterminado de este evento):

// ... touchmove: function(e) { window.document.dispatchEvent(e.event); } // ...

A pesar de que esta solución funciona básicamente, tiene un inconveniente: el envío del evento arroja un InvalidStateError no InvalidStateError en cada evento de touchmove , que obviamente es muy frecuente:

Si simplemente pongo un try / catch alrededor de la declaración dispatchEvent , desplazarse dentro de IFrame en dispositivos táctiles ya no funciona como si no se llamara en absoluto.

¿Cómo puedo deshacerme del error sin interrumpir el desplazamiento de nuevo?

Testapp donde funciona el desplazamiento, pero muchos errores no controlados se pueden probar aquí .