Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

316
Vistas
¿Cómo reemitir correctamente los eventos nativos?

Estoy trabajando en un aplazamiento de secuencias de comandos para WordPress. Toma todos los atributos src para los scripts y los establece en nulos, luego, después de la interacción con la página, los establece en su destino original. Todo esto funciona muy bien, excepto que algunos scripts dependen de eventos (por ejemplo, load o DOMContentLoaded ) para ejecutarse, por lo que necesito volver a emitirlos.

Aquí hay una respuesta que se escribió en 2018 y se actualizó en abril de 2021 que dice haz esto:

 window.document.dispatchEvent(new Event("DOMContentLoaded", { bubbles: true, cancelable: true }));

Pero parece que no funciona (o, al menos, los scripts no responden).

Mi llamada al cargador de secuencias de comandos que vuelve a escribir los atributos src se ve así:

 loadScripts( makeGraph(document.querySelectorAll("script[data-type=lazy]"))) .then(window.dispatchEvent(new Event('DOMContentLoaded', { bubbles: true, cancelable: true }))) .then(window.dispatchEvent(new Event('load'))) .then(console.log('success')) .catch(console.error);

La cadena de promesas siempre lo logra y registra el éxito.

Si tomo una pieza de JavaScript que está bajo mi control y le digo que alerte sobre esos eventos:

 window.addEventListener( 'load', () => { alert('I loaded!'); }) alert('I loaded 2'); window.addEventListener( 'DOMContentLoaded', () => { alert('DOM Content loaded!'); });

Recibo una alerta de "Cargué 2", por lo que está cargando correctamente el script después de configurar el atributo src, pero los eventos no se capturan. Por el contrario, si elimino mi secuencia de comandos que está aplazando las cosas, y dejo que las secuencias de comandos se carguen como lo haría normalmente WordPress, se eventListener s.

También intenté adjuntar dispatchEvent tanto a window como a window.document y no parece haber una diferencia.

Esto es cierto al menos en Chrome y Safari. Entonces, ¿hay alguna forma de volver a activar los eventos "nativos" que ocurren durante el curso de la carga de una página?

about 4 years ago · Juan Pablo Isaza
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda