2011-04-06 42 views
27

Soy nuevo en JavaScript.Cómo retrasar la llamada de la función de JavaScript?

Me gustaría llamar a la función JavaScript/jQuery después de cargar la página en la página aspx.

Intenté usar <form onload="function()"> y window.load = function(){}, pero el JavaScript aún se activa antes de que parte del contenido esté completamente cargado.

¿Es posible llamar durante el Page_PreRender en la página aspx y no en el código subyacente, para poder retrasar la función de JavaScript?

Intenté setTimeout("function()",5000) para solucionar el problema.

Sin embargo, parece que setTimeout() no es compatible con algunos navegadores, por ejemplo: ha causado bucles en Google Chrome.

+0

¿'' $ (function() {}) 'no funciona para usted? – ExtraGravy

Respuesta

65

setTimeout es compatible con todos los navegadores desde 1996. Se debe evitar la evaluación de "functionName()" y en lugar de hacer:

setTimeout(functionName,5000) 

ACTUALIZACIÓN: que tengan previsto inicialmente una variable pasada a la función y ninguno cuando en el tiempo de espera, lo que necesita hacer esto en su lugar:

setTimeout(function() { functionName() },5000) 

porque setTimeout pasará el ID de tiempo de espera a la función, si se llama igual que en el primer ejemplo.

Sin embargo al que está llamando la onload forma incorrecta, por lo que hay que hacer, ya sea esto:

window.onload=function() { 
    // your stuff 
} 

o, dado que está utilizando jQuery, esto:

$(document).ready(function() { 
    // your stuff 
}); 

o simplemente esta:

$(function() { 
    // your stuff 
}); 
1
$(document).ready(function(){ 

    //Code goes here 

}); 

o estilo antiguo

<body onload="myFunction()"> 
+3

ya no hacemos Old Style, por favor. – mplungjan

+1

Estoy de acuerdo, no más JS en línea ... –

+0

Está bien, está bien, lo usé una vez cuando nada más funcionó (IE6 + gran cantidad de secuencias de comandos, hace mucho tiempo). Y no me gusta también – MadBender

0

sería mejor utilizar un marco como jQuery.
En jQuery se puede definir una función como esta:

$(document).ready(function() { 

}); 

De esta manera se va a llamar cuando el DOM está totalmente cargado.

Se puede encontrar una documentación completa de la función lista() here.

3

Si usted va a estar usando jQuery, entonces es preferible unir un evento para el evento ready documento utilizando uno de los siguientes:

$(document).ready(callback); 

o

$(document).ready(function() { /* do stuff */ }); 

o

$(callback); 

o

$(function() { /* do stuff */ }); 
5

Si usted quiere estar seguro al 100% que es cuando la página se carga REALMENTE, utilice:

$(window).load(function(){ 
    //After EVERYTHING loads, including images. 
}) 

La solución de la otra, onload obras, pero carga una vez que el DOM está listo, pero no cuando el la ventana está realmente terminada de cargarse.

Cuestiones relacionadas