Ist es möglich, eine .js
Datei synchron aufzurufen und unmittelbar danach zu verwenden?
<script type="text/javascript">
var head = document.getElementsByTagName('head').item(0);
var script = document.createElement('script');
script.setAttribute('type', 'text/javascript');
script.setAttribute('src', 'http://mysite/my.js');
head.appendChild(script);
myFunction(); // Fails because it hasn't loaded from my.js yet.
window.onload = function() {
// Works most of the time but not all of the time.
// Especially if my.js injects another script that contains myFunction().
myFunction();
};
</script>
Dies wird vereinfacht. In meiner Implementierung befindet sich das createElement-Zeug in einer Funktion. Ich dachte darüber nach, der Funktion etwas hinzuzufügen, das überprüfen könnte, ob eine bestimmte Variable instanziiert wurde, bevor die Kontrolle zurückgegeben wird. Aber dann gibt es immer noch das Problem, was zu tun ist, wenn js von einer anderen Site eingefügt werden, über die ich keine Kontrolle habe.
Gedanken?
Bearbeiten:
Ich habe die beste Antwort für den Moment akzeptiert, weil sie eine gute Erklärung dafür gibt, was los ist. Aber wenn jemand Vorschläge hat, wie man dies verbessern kann, bin ich offen für sie. Hier ist ein Beispiel dafür, was ich tun möchte.
// Include() is a custom function to import js.
Include('my1.js');
Include('my2.js');
myFunc1('blarg');
myFunc2('bleet');
Ich möchte nur vermeiden, dass ich die Interna zu genau kennen muss, und einfach sagen können: "Ich möchte dieses Modul verwenden, und jetzt werde ich Code daraus verwenden."
eval()
jede Datei in der angegebenen Reihenfolge, sonst nur die Antwort speichern).