Функция $.globalEval()
Определение и применение
Функция $.globalEval() выполняет строку JavaScript в глобальной области указанного документа. Она нужна в
специальных загрузчиках скриптов; для обычных функций приложения предпочтительнее прямой вызов заранее определённого
кода.
Синтаксис
$.globalEval(code);
$.globalEval(code, { nonce: allowedNonce }, document);Параметры и возвращаемое значение
code — строка кода. Необязательный объект настроек позволяет передать nonce для CSP; третий
аргумент — документ, в котором выполняется скрипт. Без документа используется текущий. Аргумент документа
поддерживается с 3.5, настройка nonce — с 3.4.
Возвращаемое значение — undefined. Код выполняется как глобальный скрипт, а не внутри локальной функции,
вызвавшей $.globalEval(). Если нужно получить результат вычисления, этот API не заменяет обычный вызов
функции.
Особенности и совместимость
Вызов подчиняется Content Security Policy. Переданный nonce должен совпадать с разрешённым политикой документа; произвольная строка не снимает ограничение. В примере используется nonce текущего разрешённого скрипта.
Не передавайте непроверенный ввод пользователя или URL: строка является исполняемым кодом. Для JSON применяйте
JSON.parse(). Синтаксические ошибки исполняемого скрипта могут сообщаться через глобальный механизм ошибок браузера, а не как
обычный возвращаемый результат.
Документация
Пример использования
Глобальная переменная из скрипта: попробуйте сами
Выполненная строка создаёт глобальное свойство со значением 3. Параметр nonce позволяет запуск при политике CSP примера. Используется jQuery 4.0.0.
index.html
<pre id="result"></pre>
main.js
const options = { nonce: document.currentScript.nonce }
$.globalEval('var sharedCount = 3;', options, document)
$('#result').text('Глобальное значение: ' + window.sharedCount)
Нажмите , чтобы запустить пример.