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;)

War es hilfreich?

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);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top