zkrvndm
@zkrvndm
Архитектор решений

Каким образом jQuery.ajax запускает загруженные скрипты глобально?

Дело в том, что если я загружаю скрипт при помощи XMLHttpRequest и запускаю потом при помощи eval, то функции из скрипта будут доступны только локально и только при вызове изнутри самого eval. Однако, если я гружу и запускаю скрипт через jQuery.ajax, то все функции из него доступны глобально. Так вот, как он это делает? Ведь физически загруженный скрипт в DOM не добавляется! По крайней мере, после загрузки скрипта, я не вижу, чтобы он где-то появился в документе.

Похоже существуют аналоги eval запускающие скрипт из строки глобально и без добавления в DOM? Или дело не в этом?
  • Вопрос задан
  • 52 просмотра
Решения вопроса 2
SilenceOfWinter
@SilenceOfWinter
та еще зажигалка...
jquery находится в глобальной области видимости `window` поэтому и может вызывать колбеки в глобальной области. просто добавь свой объект в window вначале или передавай область видимость при вызове call.
Ответ написан
zkrvndm
@zkrvndm Автор вопроса
Архитектор решений
Что-то я конкретно так тупанул, не увидел очевидного. Глобальная область видимости доступна через window, соответственно если я захочу выполнить код внутри eval() в глобальной области видимости, то достаточно написать:
window.eval('здесь внутри объявляем нужные функции');

И это работает.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы