jquery $ .getscript - старые функции и переменные в выполненном скрипте

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

  •  27-09-2019
  •  | 
  •  

Вопрос

Я выполняю JavaScript с jQuery $ .getscript. В выполненном скрипте я не доступа к функциям и переменным файла моего исходного файла.

Есть ли решение?

Это было полезно?

Решение

Сценарий, выполненный на $ .getscript () делает иметь доступ к глобальному контексту. Вы можете использовать любую глобальную переменную (или функцию для этого) изнутри внешнего скрипта.

Другие советы

Ник Craver, я просто трачу 3 (!) Часы, одержимые, почему моя вещь не будет работать, и вы дали мне понимание, которое мне нужно было заставить его работать.

Xoxoxoxoxoxoxoxoxo

Интересно отметить:

Вы можете объявить переменную как jQuery var, как это:

$variableName = something;

Таким образом, jQuery также имеет доступ к нему из любой точки объема.

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

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

test.js: 

alert( $alertString ); 

Я нашел ответ здесь полезным для моего понимания темы, но я все еще не мог заставить его работать в моем собственном контексте, пока я не буду Эта статья о TechMonks:

Когда я копирую / вставил свой последний пример в голову моего главного файла .js все это только что работал. Для меня по крайней мере, функция $ .getscript () была сломана, и это исправление:

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;
 }
});
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top