Обратный вызов
onload
вызывается, когда они были завершены:
- HTTP-запрос для извлечения файла сценария был успешно выполнен
- Содержание скрипта было проанализировано
- Сценарий был выполнен, таким образом возможно выставив новые глобальные переменные и / или вызвав побочные эффекты, такие как манипулирование DOM или XHR
Вот демонстрационная версия, где скриптБиблиотека jQuery добавлена в <head>
, что позволяет использовать глобальную переменную $
, созданную при выполнении импортированного скрипта:
const script = document.createElement('script');
script.onload = () => {
try {
$;
console.log('onload - $ is defined');
} catch(e) {
console.log('onload - $ is not defined yet');
}
}
script.src = 'https://code.jquery.com/jquery-3.3.1.js';
try {
$;
console.log('main - $ is defined');
} catch(e) {
console.log('main - $ is not defined yet');
}
document.head.appendChild(script);
Последняя точность - в этом случае загрузка запускается добавлением скрипта в DOM, а не script.src = ...
!Попробуйте закомментировать последнюю строку - скрипт не загружается.
Также могут быть другие случаи, когда загрузка запускается script.src = ...
, например, когда скрипт добавляется в DOM, .src
установлен.