Domanda

Ho avuto un problema ottenere .getScript al lavoro, in alcuni casi strani.

Per esempio, questo funziona per caricare gli script solo quando necessario.

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

Tuttavia non sembra di lavorare su un paio di script che ho scritto. Se chiamo .getScript a prendere questo file JS Ho caricato a Pastebin ( http://pastebin.com/GVFcMJ4P ) e la chiamata tweetStream(); non succede nulla. Tuttavia, se faccio la seguente funziona:

var twitter = document.createElement('script');
twitter.type = 'text/javascript';
twitter.async = true;
twitter.src = '/path-to/tweet.js';
$jQ('.twitter-section').append(twitter);
tweetStream();

Che cosa sto facendo di sbagliato? Qualsiasi aiuto sarebbe fantastico, grazie!

P.S. Quale metodo è più veloce o più efficiente?

Nota: Il mio codice non è ospitato su pastebin, ho appena caricato il contenuto del file .js che è sul mio server a quel sito, quindi è facile da condividere. Non sto leeching di pastebin per l'hosting;)

È stato utile?

Soluzione

$jQ.getScript() di jQuery è una chiamata asincrona. Quindi, se stessi chiamando tweetStream() subito dopo il getScript(), sarebbe eseguire prima lo script è arrivato.

È possibile chiamare tweetStream() da (o come) un callback, invece.

$jQ.getScript('/path-to/tweet.js', function() {
    tweetStream();
});

o questo se non vi interessa circa il valore di this in tweetStream().

$jQ.getScript('/path-to/tweet.js', tweetStream);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top