Pregunta

i ejecutar un javascript con jQuery $ .getScript. En la secuencia de comandos ejecutados no tengo acceso a las funciones y variables de mi archivo de origen.

¿Hay una solución?

¿Fue útil?

Solución

El script ejecutado por $ .getScript () hace tener acceso al contexto global. Se puede utilizar cualquier variable global (o función para el caso) desde dentro de su script externo.

Otros consejos

Nick Craver, acabo de pasar 3 (!) Horas de obsesionarse con eso que mi cosa no funcionaría, y que me dio la idea de que tenía que hacer que funcione.

XOXOXOXOXOXOXOXO

interesante nota:

Se puede declarar una variable como jQuery var como esto:

$variableName = something;

De esta manera jQuery también tiene acceso a ella desde cualquier lugar en el ámbito de aplicación.

$(function(){ 
    $alertString = 'Hello World'; 

    $.getScript('test.js', function(){ 
        // do nothing 
    });    
} 

test.js: 

alert( $alertString ); 

He encontrado la respuesta aquí útil para mi comprensión del tema, pero todavía no podía hacer que funcione en mi propio contexto hasta que me encontré con este artículo en TechMonks :

Cuando copio / pegado su último ejemplo en la cabeza de mis principales .js todo sólo funcionó. Para mí, al menos, la función $ .getScript () se rompió, y esta es la solución:

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 bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top