Erkennen, wenn das script bereits geladen ist oder nicht
Scheint es, dass helloworld.js
geladen wird mehrfach basierend auf der Anzahl der Male, die ich auf #load
. Ich sage dies, weil wenn ich einen Blick in die Google Chrome Entwicklertools Registerkarte "Netzwerk", es zeigt helloworld.js
so oft wie ich auf #load
.
$(document).ready(function() {
$("#load").click(function(){
$.getScript('helloworld.js', function() {
hello();
});
});
});
Den hello()
Funktion sieht wie folgt aus:
function hello(){
alert("hello");
}
Ist es möglich, zu erkennen, wenn helloworld.js
wurde bereits geladen?
Also, wenn es noch nicht geladen, laden Sie es, und wenn es geladen hat, nicht laden.
Dies ist, was Entwickler-Tools derzeit zeigt mir wenn ich auf die #load
Taste 4 mal:
- Sie können auch lassen Sie es verwenden, cache:
$.ajaxSetup({ cache: true });
(entnommen aus hier). - Die Aufrufe zwischengespeichert werden sollte, bereits durch den browser...
- dies scheint zu funktionieren, vielen Dank. Es sollte eine Antwort.
- standardmäßig jQuery hinzufügen eindeutigen Zeitstempel zu jedem AJAX-Aufruf, so dass es nicht zwischengespeichert werden. Durch das setzen der Eigenschaft auf false, es wird nicht fügen Sie einen beliebigen eindeutigen Wert.
- cheers, fertig.
$.getScript
ist die Ausnahme, es wird standardmäßig aufcache:false
es sei denn, speziell inajaxSetup
. (gemäß der Dokumentation)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Weitere option ist die Vermietung
.getScript()
ausführen, aber lassen Sie es das script aus dem browser-cache, damit Sie nicht neu geladen, jedes mal.Um dies zu erreichen, fügen Sie solchen code:
Aus der Dokumentation Seite.
.one()
was ich zugeben muss, ist in diesem Fall besser.Setzen Sie ein flag, wenn die Datei erfolgreich geladen. Wenn flag gesetzt ist, dann überspringen Sie die Datei, laden wieder.
Versuchen, diesen code,
Also warum nicht nur Feuer, das Ereignis einmal so:
Verhindern, dass nachfolgende Ladungen und vermeidet die Verwendung einer globalen
$("#load").click(hello)
nachhello()
nachträgliche Klicks#load
rufen Sie diehello
Methode ohne neu-laden der js.hello()
Funktion viele Male, aber müssen die Lasthelloworld.js
nur einmal.Könntest du eine Hilfsfunktion erstellen:
getScript
aufgerufen wird, mehrere Male für die gleiche Datei-Namen bevor die betreffende Datei abgerufen und ausgeführt?:P