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

265
Views
¿Por qué no se llama document.onload?

Al mirar la salida de console.log(document) , encuentro que el document tiene estas propiedades: onload=null;onloadstart=null;onloadend=null;onreadystatechange=null; Escribo el siguiente código:

 <html> <head><title>test</title></head> <body> <script> document.onload=function(){alert("document.onload");}; document.onloadstart=function(){alert("document.onloadstart");}; document.onloadend=function(){alert("document.onloadend");}; document.onreadystatechange=function(){alert("document.onreadystatechange");}; </script> <div>hello</div> </body> </html>

Curiosamente, document.onload,document.onloadstart,document.onloadend nunca se llaman, mientras que document.onreadystatechange se llama dos veces, ¿por qué?

about 4 years ago · Juan Pablo Isaza
3 answers
Answer question

0

¿Por qué no se llama document.onload?

En primer lugar, los eventos de load (creados por el navegador) no burbujean (porque así es como se especifica):

 document.body.onload = function(e) { console.dir(e.bubbles) }

Por lo tanto, solo puede escuchar estos eventos de load , en el elemento para el que ocurren.

Y para Documento , no hay ningún evento de load en la lista que se active en función del estándar.

readystatechange , por otro lado, aparece como un evento que puede ocurrir para el document .

Sin embargo, puede estar seguro de escuchar los eventos de load en el document y se llamará a la devolución de llamada del evento. Pero eso solo sucederá si, por ejemplo, activa manualmente uno en el document :

 const event = new Event('load'); document.onload = function (e) { console.log('load document') } document.dispatchEvent(event);

O si emite un evento de load que burbujea en un descendiente:

 const event = new Event('load', {bubbles: true}); document.onload = function (e) { console.log('load document') } document.body.dispatchEvent(event);

Entonces, ¿por qué onload aparece como una propiedad? Eso se debe a GlobalEventHandlers y Document includes GlobalEventHandlers ), y debido al atributo IDL del controlador de eventos , exponiéndolos como on… propiedades de eventos.

about 4 years ago · Juan Pablo Isaza Report

0

.onload es parte del objeto de la window , no para el document . GlobalEventHandlers.onload

La propiedad onload del mixin GlobalEventHandlers es un controlador de eventos que procesa eventos de load en elementos Window , XMLHttpRequest , <iframe> e <img> , etc.

Y por lo que he visto en MDN .onloadstart y .onloadend se usan para recursos como imágenes, no sé si están disponibles para document / window . GlobalEventHandlers.onloadstart

Pero creo que con onreadystatechange deberías poder emular el comportamiento de onloadstart y onloadend .
Documento.readyState

about 4 years ago · Juan Pablo Isaza Report

0

No estoy seguro, pero prueba esto:

 window.addEventListener('load', () => { alert("document.onload") })

Solo uso el evento de carga de la ventana, pero si nunca vi el evento de carga del documento, simplemente cambie la window al document .

Como dije, no estoy seguro de qué hacer, porque la cantidad de su código, que mostró, es menor.

about 4 years ago · Juan Pablo Isaza Report
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!