Estoy tratando de resolver un problema con algún código que heredé.Interacción entre jQuery .Ready() y <script defer>
tengo una página HTML con
<script type="text/javascript" src="file1.js" defer="defer"></script>
<script type="text/javascript" src="file2.js" defer="defer"></script>
</body>
</html>
file1.js ha
FOO = {
init : function() {
var bar = BAR;
}
}
$(document).ready(FOO.init);
file2.js ha
var BAR = {
}
Debido al atributo de retrasar de los elementos, es que Es seguro suponer que cuando el .ready()
llama al FOO.init()
puede BAR
aún no se ha definido en ese punto b/c el código en file2.js
no se ha ejecutado todavía debido a la ejecución diferida?
Esto coincidiría con un error que estoy tratando de rastrear (solo ocurre esporádicamente en IE), pero realmente quiero entender por qué esto está sucediendo antes de trabajar en una solución. No tengo idea de por qué el desarrollador original usó defer
, aparte de un comentario críptico sobre "tenía que" hacerlo de esta manera.
No tengo una respuesta, pero lo siento por ti, hombre. –
¿Entiende el atributo 'defer'? Porque me parece que es algo muy común de hacer ... –
Supongo que el desarrollador original quería que se cargara otro script antes de file1.js y file2.js (o él no sabía acerca de $ (document) .ready () ...) – jbl