evento - jquery document states
jQuery: impone el orden de ejecuciĆ³n de las llamadas document.ready() (5)
Como @ jfriend00 menciona que las ready callbacks are called in the order they were registered.
Así que incluso si este bloque de código se llama al principio, puede establecer otra devolución de llamada para que se ejecute en el extremo.
jQuery(document).ready(function(){
jQuery(document).ready(function(){
// This block will be executed after all ready calls.
});
});
Estoy trabajando en una base de código con varios bloques de código que establecen algún comportamiento en document.ready () (jQuery). ¿Hay alguna forma de imponer que un bloque específico se llame antes que cualquiera de los otros?
Antecedentes: necesito detectar errores JS en un entorno de prueba automatizado, por lo que necesito el código que comienza a registrar los errores JS para ejecutarse antes de que se ejecute cualquier otro código JS.
Debería poder utilizar holdReady para hacer esto. Siempre que esté incluido antes de sus eventos listos, puede ejecutar su propio código y luego activar los otros eventos listos.
Estaba tratando de hacer algo similar, estaba cargando un montón de polyfills que tenían funciones .ready (), pero también tenía mis propios .ready () en la página que necesitaba que se ejecutaran primero, aunque los polyfills se cargaron en el encabezado .
Encontré una buena forma de evitarlo al tener un .ready () muy temprano (justo después de las cargas de jQuery) que ejecuta funciones desde una matriz. Como es muy temprano en el código fuente, primero se ejecuta .ready (). Más abajo en la página puedo agregar funciones a la matriz y, por lo tanto, todas se ejecutan antes que cualquier otra .ready () s.
Lo envolví en una función .beforeReady () y lo puse en GitHub como jQuery-Before-Ready para cualquiera que esté interesado. https://github.com/aim12340/jQuery-Before-Ready
Puede ejecutar el código de inicio de registro en DOMReady y otra inicialización en carga. O puede crear su propio administrador de inicialización que primero llame al código de inicio de registro y luego a todas las demás devoluciones de llamada de inicialización (siempre que estén registradas con su administrador y no con jQuery, a menos que desee piratear jQuery y extraerlas desde allí, lo cual no hago). te aconsejo).
document.ready()
devoluciones de llamada document.ready()
se llaman en el orden en que se registraron. Si registra su devolución de llamada de prueba primero, se llamará primero.
Además, si su código de prueba no necesita manipular realmente el DOM, entonces podrá ejecutarlo a medida que se analiza el código y no esperar hasta que esté listo el DOM, que se ejecutará antes de que se realicen las llamadas de devolución de otros document.ready()
. O tal vez podría ejecutar parte de su código de prueba inmediatamente y diferir solo la parte que usa el DOM hasta document.ready()
.
Otra idea es (para propósitos de prueba solamente) que podría ejecutarse con una versión ligeramente modificada de jQuery que agregó una bandera a document.ready()
que cuando se pasa y se establece en true
indica para llamar a esa función primero o puede agregar un nuevo document.readyFirst()
método document.readyFirst()
que llamaría primero a su función. Esto implicaría pequeños cambios en el código de procesamiento document.ready()
en jQuery.