Ich versuche, ein Problem mit etwas Code herauszufinden, den ich geerbt habe.Interaktion zwischen jQuery .ready() und <script defer>
Ich habe eine HTML-Seite mit
<script type="text/javascript" src="file1.js" defer="defer"></script>
<script type="text/javascript" src="file2.js" defer="defer"></script>
</body>
</html>
file1.js hat
FOO = {
init : function() {
var bar = BAR;
}
}
$(document).ready(FOO.init);
file2.js hat
var BAR = {
}
Wegen der Zurückstellungs Attribut auf den Elementen, ist es sicher anzunehmen, dass, wenn die .ready()
FOO.init()
ruft, dass BAR
kann zu diesem Zeitpunkt noch undefiniert b/c der Code in file2.js
wurde wegen der verzögerten Ausführung noch nicht ausgeführt?
Dieser Fehler passen würde ich auf der Spur versuchen (nur sporadisch in IE auftritt), aber ich mag wirklich warum dies geschieht verstehen, bevor ich an einer Lösung arbeiten. Ich habe keine Ahnung, warum der ursprüngliche Entwickler defer
verwendet hat, abgesehen von einem kryptischen Kommentar über "Er musste es" so machen.
Ich habe keine Antwort, aber ich fühle für dich, Mann. –
Verstehst du das "Defer" -Attribut? Weil es mir scheint, ist es eine sehr häufige Sache zu tun ... –
Ich denke, der ursprüngliche Entwickler wollte ein anderes Skript vor Datei1.js und Datei2.js geladen werden (oder er wusste nicht über $ (Dokument) .ready () ...) – jbl