2012-06-29 51 views
36

Tenemos varios archivos JavaScript que cargamos en la parte inferior de la página maestra. Sin embargo, tengo la situación de que necesito realizar algunos JavaScript antes de que se carguen los otros scripts. ¿Es posible esperar hasta que se carguen todos los archivos JavaScript y luego ejecutar algún código JavaScript?¿Es posible esperar hasta que se carguen todos los archivos javascript antes de ejecutar el código javascript?

Pensé que $(document).ready() hizo esto, pero como resulta, no es así. Por supuesto, podemos mover los archivos de script de abajo hacia arriba, pero me pregunto si es posible lo que quiero.

+0

Se puede utilizar un cargador de 'script' para hacerlo después de que hagas tu propio script. –

+1

No creo que esté claro lo que quiere; usted habla, al mismo tiempo, de querer realizar X * * antes de que se carguen otros scripts, pero también de esperar hasta que todos los scripts * estén * cargados. ¿Cuál es? ¿Y cuál es la naturaleza de la X que deseas realizar? –

+0

@Damien_The_Unbeliever TGo sea más claro: quiero ejecutar javascript después de que se carguen todos los archivos javascript. – Martijn

Respuesta

53

Usted puede utilizar

$(window).on('load', function() { 
    // your code here 
}); 

¿Qué va a esperar hasta que se carga la página. $(document).ready() espera hasta que el DOM se carga

+1

Aquí hay una mejor explicación http://4loc.wordpress.com/2009/04/28/documentready-vs-windowload/ – Eruant

+0

Funcionó bien para mi aplicación, que tuvo que esperar hasta que los scripts cargados dinámicamente se terminaron de cargar antes de generar el contenido de la página. +1 – Roberto

18

Puede usar <script>'s defer attribute. Especifica que el script se ejecutará cuando la página haya terminado de analizarse.

<script defer src="path/to/yourscript.js"> 

Un buen artículo sobre esto: http://davidwalsh.name/script-defer

apoyo navegador parece bastante bueno: http://caniuse.com/#search=defer

+1

No parece esperar a que se ejecuten todos los demás archivos JS, al menos no en Firefox. – Rolf

27

Puede utilizar .getScript() y ejecutar su código después de que se carga:

$.getScript("my_lovely_script.js", function(){ 

    alert("Script loaded and executed."); 
    // here you can use anything you defined in the loaded script 

}); 

se puede ver una mejor explicación aquí: How do I include a JavaScript file in another JavaScript file?

+8

si quiero la función javascript estándar, no jquery. ¿Cómo está el código? –

+0

Tenga en cuenta que esto no guardará el archivo en caché, sino que lo descargará todo el tiempo. La documentación se refiere a $ .ajaxSetup o $ .ajax para habilitar el caché. – JanErikGunnar

Cuestiones relacionadas