Diferencia entre document.createElement ( 'script') vs jQuery .getScript
-
11-10-2019 - |
Pregunta
He tenido un problema para conseguir .getScript
al trabajo en algunos casos raros.
Por ejemplo, esto funciona para cargar los scripts sólo cuando sea necesario.
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');
}
Sin embargo, no parece que el trabajo en unos pocos guiones que escribí. Si llamo .getScript
a buscar este archivo JS He subido a Pastebin ( http://pastebin.com/GVFcMJ4P ) y la llamada tweetStream();
no pasa nada. Sin embargo, si hago lo siguiente funciona:
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é estoy haciendo mal? Cualquier ayuda sería impresionante, gracias!
P.S. ¿Qué método es más rápido o más eficiente?
Nota: Mi código no se encuentra alojado en Pastebin, que acaba de subir el contenido del archivo .js que está en mi servidor a ese sitio por lo que es fácil de compartir. No estoy descargando de Pastebin para acoger;)
Solución
$jQ.getScript()
de jQuery es una llamada asincrónica. Así que si estuviera llamando a tweetStream()
inmediatamente después de la getScript()
, sería ejecutar antes de que llegara el guión.
Se puede llamar desde tweetStream()
(o como) una devolución de llamada en su lugar.
$jQ.getScript('/path-to/tweet.js', function() {
tweetStream();
});
o esto si no se preocupan por el valor de this
en tweetStream()
.
$jQ.getScript('/path-to/tweet.js', tweetStream);