Differenz zwischen document.createelement ('script') vs jQuery .getScript
-
11-10-2019 - |
Frage
Ich hatte ein Problem bekommen .getScript
in einigen seltsamen Fällen arbeiten.
Dies lädt beispielsweise die Skripte nur bei Bedarf.
function twitterSDK() {
$jQ.getScript('http://platform.twitter.com/widgets.js');
}
function diggShare() {
$jQ.getScript('http://widgets.digg.com/buttons.js');
}
function buzzShare() {
$jQ.getScript('http://www.google.com/buzz/api/button.js');
}
Es scheint jedoch nicht an einigen Skripten zu funktionieren, die ich geschrieben habe. Wenn ich anrufe .getScript
Um diese JS -Datei abzurufen, die ich auf Pastebin hochgeladen habe ( http://pastebin.com/gvfcmj4p ) und Ruf an tweetStream();
nichts passiert. Wenn ich jedoch Folgendes mache, funktioniert es:
var twitter = document.createElement('script');
twitter.type = 'text/javascript';
twitter.async = true;
twitter.src = '/path-to/tweet.js';
$jQ('.twitter-section').append(twitter);
tweetStream();
Was mache ich falsch? Jede Hilfe wäre großartig, danke!
PS Welche Methode ist schneller oder effizienter?
Hinweis: Mein Code wird nicht auf Pastebin gehostet. Ich habe gerade den Inhalt der .js -Datei, die auf meinem Server auf dieser Website steht, hochgeladen, damit sie einfach zu teilen ist. Ich blutee kein Pastebin zum Hosting;)
Lösung
JQuery's $jQ.getScript()
ist ein asynchroner Anruf. Also, wenn Sie angerufen haben tweetStream()
unmittelbar nach dem getScript()
, Es würde laufen, bevor das Drehbuch ankam.
Du kannst anrufen tweetStream()
Aus (oder) stattdessen ein Rückruf.
$jQ.getScript('/path-to/tweet.js', function() {
tweetStream();
});
oder dies, wenn Sie sich nicht um den Wert von interessieren this
in tweetStream()
.
$jQ.getScript('/path-to/tweet.js', tweetStream);