Question

J'ai eu un problème se .getScript au travail dans quelques rares cas.

Par exemple, cela fonctionne pour charger les scripts uniquement en cas de besoin.

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

Cependant, il ne semble pas travailler sur quelques scripts que j'ai écrit. Si je l'appelle .getScript chercher ce fichier JS je l'ai téléchargé sur Pastebin ( http://pastebin.com/GVFcMJ4P ) et rien tweetStream(); d'appel arrive. Cependant, si je fais ce qui suit cela fonctionne:

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

Qu'est-ce que je fais mal? Toute aide serait génial, merci!

P.S. Quelle méthode est plus rapide ou plus efficace?

Remarque: Mon code n'est pas hébergé sur Pastebin, je viens de téléchargé le contenu du fichier .js qui est sur mon serveur à ce site il est donc facile à partager. Je ne suis pas sangsue de pastebin pour l'hébergement;)

Était-ce utile?

La solution

Le $jQ.getScript() jQuery est un appel asynchrone. Donc, si vous appelez tweetStream() immédiatement après la getScript(), il courrait avant que le script est arrivé.

Vous pouvez appeler tweetStream() de (ou) un rappel à la place.

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

ou si vous ne se soucient pas de la valeur de this dans tweetStream().

$jQ.getScript('/path-to/tweet.js', tweetStream);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top