Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

315
Views
¿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
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!