jQuery $.getScript - funções e variáveis ​​antigas no script executado

StackOverflow https://stackoverflow.com/questions/3052188

  •  27-09-2019
  •  | 
  •  

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?

Foi útil?

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;
 }
});
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top