Функция $.globalEval()

Определение и применение

Функция $.globalEval() выполняет строку JavaScript в глобальной области указанного документа. Она нужна в специальных загрузчиках скриптов; для обычных функций приложения предпочтительнее прямой вызов заранее определённого кода.

Синтаксис

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
HTML
<pre id="result"></pre>
main.js
JavaScript
const options = { nonce: document.currentScript.nonce }
$.globalEval('var sharedCount = 3;', options, document)
$('#result').text('Глобальное значение: ' + window.sharedCount)