Foros del Web » Programando para Internet » Javascript »

Antes del evento Onload

Estas en el tema de Antes del evento Onload en el foro de Javascript en Foros del Web. Buenas a todos, Estoy pensativo. Todo mi javascript funciona tras el onload. Hace poco he usado varios frameworks donde el javascript funciona antes del onload. ...
  #1 (permalink)  
Antiguo 07/03/2013, 17:49
Avatar de salbatore  
Fecha de Ingreso: abril-2007
Ubicación: Springfield
Mensajes: 1.567
Antigüedad: 17 años, 1 mes
Puntos: 19
Antes del evento Onload

Buenas a todos,

Estoy pensativo. Todo mi javascript funciona tras el onload. Hace poco he usado varios frameworks donde el javascript funciona antes del onload.

He investigado... y es por que llaman a la funcion al final del codigo HTML, es decir, en el pie de la web, con lo que tienen ya todo el codigo descargado.

Mi duda es. Se puede hacer un modo mas profesional?. O tengo que poner una linea llamando a los scripts en el pie de la web?.

No se si me explico, jeje.
  #2 (permalink)  
Antiguo 07/03/2013, 17:54
 
Fecha de Ingreso: diciembre-2010
Mensajes: 788
Antigüedad: 13 años, 4 meses
Puntos: 51
Respuesta: Antes del evento Onload

Todo depende de que queres hacer. Si vas a hacer un alert, podes usarlo al comienzo del documento. Pero si necesitas interactuar con el dom html no vas a poder hasta que no este cargado, y eso es cuando el evento onload sucede.

Lo más profesional es ponerlo al final del html, no solo por el hecho de "ser profesional", es por cuestiones de eficiencia.
  #3 (permalink)  
Antiguo 07/03/2013, 19:07
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años
Puntos: 834
Respuesta: Antes del evento Onload

Lo que se invoque inmediatamente antes del tag body de cierre equivale al evento onload. Lo que estás buscando seguramente es el evento DOMContentLoaded.

Puede usarse así:

Código PHP:

var DR=function(f){
    if(
document.addEventListener){
        var 
func=function(){f();document.removeEventListener('DOMContentLoaded',func,false);}
        
document.addEventListener('DOMContentLoaded',func,false);
    }else{
        function 
r(f){/in/.test(document.readyState)?setTimeout(function(){r(f);},9):f();};
        
r(f);
    }
}
//Y podemos usarlo así:
DR(function(){alert(123);});
//o así:
function test(){alert(456);}
DR(test); 
  #4 (permalink)  
Antiguo 07/03/2013, 20:24
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: Antes del evento Onload

Cita:
Iniciado por salbatore Ver Mensaje
Buenas a todos,

Estoy pensativo. Todo mi javascript funciona tras el onload. Hace poco he usado varios frameworks donde el javascript funciona antes del onload.

He investigado... y es por que llaman a la funcion al final del codigo HTML, es decir, en el pie de la web, con lo que tienen ya todo el codigo descargado.

Mi duda es. Se puede hacer un modo mas profesional?. O tengo que poner una linea llamando a los scripts en el pie de la web?.

No se si me explico, jeje.
Salvo algún caso particular, la recomendación es ponerlas antes del cierre del body, aqui tenés una explicación del porque
http://developer.yahoo.com/performan...html#js_bottom
Sin embargo, no necesariamente eso se relaciona con el hecho de que necesites que en determinadas situaciones requieras la carga de la página previo a la ejecución de la función, en ese caso lo correcto es
Código:
<body onload="funcion()">
ó
Código:
window.onload = function(){
// funcion
}
ó

Código:
$(document).ready(function(){
// código jQuery
});
Pero como señalé, puede haber excepciones
Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #5 (permalink)  
Antiguo 08/03/2013, 02:56
Avatar de salbatore  
Fecha de Ingreso: abril-2007
Ubicación: Springfield
Mensajes: 1.567
Antigüedad: 17 años, 1 mes
Puntos: 19
Respuesta: Antes del evento Onload

Gracias a los dos, voy a estudiar lo que me decis.

:D

Gracias

Etiquetas: evento, funcion, html, onload
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:57.