Es gibt keinen Import/include/require in javascript, aber es gibt zwei Möglichkeiten, zu erreichen, was Sie wollen:
1 - Sie es mit einem AJAX-Aufruf laden können dann eval verwenden.
Dies ist der einfachste Weg, aber es ist aufgrund der Javascript-Sicherheitseinstellungen auf Ihre Domäne beschränkt, und die Verwendung von Eval öffnet die Tür zu Bugs und Hacks.
2 - Fügen Sie ein Skript-Tag mit der Skript-URL im HTML-Code hinzu.
Definitiv der beste Weg zu gehen. Sie können das Skript auch von einem fremden Server laden, und es ist sauber, wenn Sie den Browser-Parser zum Auswerten des Codes verwenden. Sie können das Tag im Kopf der Webseite oder am unteren Rand des Körpers platzieren.
Beide Lösungen werden hier diskutiert und illustriert.
Jetzt gibt es ein großes Problem, über das Sie wissen müssen. Dies bedeutet, dass Sie den Code remote laden. Moderne Webbrowser laden die Datei und führen das aktuelle Skript weiter aus, da sie alles asynchron laden, um die Leistung zu verbessern.
Wenn Sie diese Tricks direkt verwenden, können Sie den neu geladenen Code nicht in der nächsten Zeile verwenden, nachdem Sie ihn angefordert haben, da er noch geladen wird.
z.B: my_lovely_script.js enthält MySuperObject
var js = document.createElement("script");
js.type = "text/javascript";
js.src = jsFilePath;
document.body.appendChild(js);
var s = new MySuperObject();
Error : MySuperObject is undefined
Dann Sie die Seite schlagen F5 neu laden. Und es funktioniert! Confusing ...
Was also zu tun?
Nun, Sie können den Hack verwenden, den der Autor in dem Link, den ich Ihnen gab, vorschlägt. Zusammengefasst verwendet er en-Ereignis, um eine Rückruffunktion auszuführen, wenn das Skript geladen wird. Sie können also den gesamten Code über die Remote-Bibliothek in die Callback-Funktion einfügen. E.G:
function loadScript(url, callback)
{
// adding the script tag to the head as suggested before
var head = document.getElementsByTagName('head')[0];
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = url;
// then bind the event to the callback function
// there are several events for cross browser compatibility
script.onreadystatechange = callback;
script.onload = callback;
// fire the loading
head.appendChild(script);
}
Dann schreiben Sie den Code, den Sie, nachdem das Skript verwenden möchten, in einer Lambda-Funktion geladen wird:
var myPrettyCode = function() {
// here, do what ever you want
};
Dann sind Sie alles, was laufen:
loadScript("my_lovely_script.js", myPrettyCode);
Ok, Ich hab es geschafft. Aber es ist ein Schmerz, all das Zeug zu schreiben.
Nun, in diesem Fall, Sie wie immer den fantastischen frei jQuery Framework verwenden können, die Sie genau die gleiche Sache in einer Linie tun lassen:
$.getScript("my_lovely_script.js", function() {
alert("Script loaded and executed.");
// here you can use anything you defined in the loaded script
});
möglich Duplikat [So schließen ein JavaScript-Datei in einer anderen JavaScript-Datei?] (Http://stackoverflow.com/questions/950087/how-to-include-a-javascript-file-in-another-javascript-file) – bjb568