jQuery $.getScript - funções e variáveis antigas no script executado
Pergunta
executo um javascript com jQuery $.getScript.No script executado não tenho acesso às funções e variáveis do meu arquivo fonte.
Há uma solução?
Solução
O script executado por $.getScript() faz ter acesso ao contexto global.Você pode usar qualquer variável global (ou função) de dentro do seu script externo.
Outras dicas
Nick Craver, acabei de passar 3 (!) horas obcecado pensando por que meu negócio não funcionaria, e você me deu a visão que eu precisava para fazê-lo funcionar.
XOXOXOXOXOXOXO
interessante notar:
você pode declarar uma variável como jquery var assim:
$variableName = something;
Dessa forma, o jquery também tem acesso a ele de qualquer lugar do escopo.
$(function(){
$alertString = 'Hello World';
$.getScript('test.js', function(){
// do nothing
});
}
test.js:
alert( $alertString );
Achei a resposta aqui útil para minha compreensão do tópico, mas ainda não consegui fazê-la funcionar em meu próprio contexto até que me deparei este artigo no TechMonks:
Quando copiei/colei o exemplo final no cabeçalho do meu arquivo .js principal, tudo funcionou.Pelo menos para mim, a função $.getScript() estava quebrada, e esta é a solução:
jQuery.extend({
getScript: function (url, callback) {
var head = document.getElementsByTagName("head")[0] || document.documentElement;
var script = document.createElement("script");
script.src = url;
// Handle Script loading
{
var done = false;
// Attach handlers for all browsers
script.onload = script.onreadystatechange = function () {
if (!done && (!this.readyState || this.readyState === "loaded" || this.readyState === "complete")) {
done = true;
//success();
//complete();
if (callback) callback();
// Handle memory leak in IE
script.onload = script.onreadystatechange = null;
if (head && script.parentNode) {
head.removeChild(script);
}
}
};
}
head.insertBefore(script, head.firstChild);
return undefined;
}
});