2012-01-02 16 views
6

Aparece desde el panel de red, cuando carga scripts a través de Modernizr.load, en realidad no bloquea $ (document) .ready().

Así que teóricamente, digamos que agrego json2.js a través de Modernizr, y otro desarrollador intenta usar JSON.parse en $ (documento) .ready(), su script realmente podría romperse debido a la condición de carrera.

¿Sería posible remediar esto sin intentar controlar todos los registros de código?

Respuesta

4

Lo vería de esta manera: Usar Modernizr (y pruebas de navegador) para cargar archivos Javascript es una decisión de diseño muy general que todos en su equipo deben tener en cuenta en cualquier caso.

Sin embargo, es probable que desee implementar (si aún no lo ha hecho) algún tipo de inicialización de su aplicación, que debería ser lo último que se ejecute, una vez que se haya cargado todo. Esta inicialización se puede ejecutar en una devolución de llamada yepnope, aparentemente incluso dentro de un contenedor $(document).ready().

Yepnope estados en este contexto en los "errores comunes":

hecho de que su escritura se realiza, no significa que el documento está listo. No olvide que puede usar devoluciones de llamadas listas para documentos dentro de yepnope callbacks. Si está jugando con el DOM, recomendamos encarecidamente que lo haga, porque su entorno de prueba puede actuar de forma diferente a su servidor de producción, las velocidades son dramáticamente diferentes .


Y en aras de la exhaustividad:

sin comprobar ellos más lejos, aquí un par de otras ideas sobre cómo hacer frente a document.ready + Modernizr.load: How can I use yepnope.js with $(document).ready() effectively? y https://stackoverflow.com/a/6767886/564721

+0

Terminamos utilizando Modernizr.load() para cuñas puramente estéticas. Es demasiado doloroso usarlo para funciones funcionales. – voidvector

Cuestiones relacionadas