Fragen über jQuery getScript ()
-
01-10-2019 - |
Frage
$.getScript("somescript.js", function() {
alert('Load Complete');
});
- Einmal geladen, ist es zwischengespeichert oder ist es wieder geladen, wenn mehr als einmal referenziert?
- Wenn ein Ereignis hängt davon ab, diese Datei geladen wird, wird die Veranstaltung von fail verzögert / Timeout, falls die Datei dauert länger zu laden oder nicht geladen?
- Wie kann ich überprüfen und etwas tun, falls die Datei aus irgendeinem Grund nicht geladen werden kann?
Vielen Dank im Voraus für Ihre Hilfe.
Lösung
1) jQuery-Anfragen für Skripte über AJAX nicht zwischengespeichert, wenn Sie angeben, dass als Option in der $ Schnipsel () Funktion. Von der Dokumentation :
"Cache, Boolean
Standard: true, false für datatype 'script' und 'JSONP'
Wenn auf false gesetzt wird, die Seiten erzwingen, dass Sie verlangen, die nicht vom Browser zwischengespeichert werden. "
2) Ich glaube, ich brauche Beispielcode, um zu sehen, diesen Teil der Frage zu erreichen.
3) Sie können nicht alles tun, wenn $ .getScript () fehlschlägt. Aber Sie sollten sich bewusst sein, dass $ .getScript () ist nur eine kurze Hand Version von $ Schnipsel (), equivilant an:
$.ajax({
url: url,
dataType: 'script',
success: function(data) {
//
}
});
Das bedeutet, dass Sie den error
Rückruf implementieren können, klug, etwas zu tun, wenn die Datei nicht geladen werden kann, das heißt:
$.ajax({
url: url,
dataType: 'script',
success: function(data) {
//
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
alert("panic");
}
});
Andere Tipps
Neben Glen Antwort würde Ich mag eine andere Option bieten:
$.getScript({
url: "foo.js",
cache: true // or false, depending on your preference. in most cases you would want it true.
}).done(function(){
// do something when script was loaded and run
}).fail(function(){
// do something when script failed to load
});
Unterstützt auf jQuery 1.12.0 +