Как создать глобальную функцию внутри другой функции?
Есть огромный внешний js код слайдера, который по инструкции установки должен грузится синхронно. Хочу грузить асинхронно и в конце загрузки создавать и запускать функцию, которая активирует слайдер на странице.
<script async src="https://heeg.ru/test/js/swiper.min.js" onload='function sliderInit(){var swiper=new Swiper(".swiper-container",{lazy:!0,pagination:{el:".swiper-pagination",clickable:!0},navigation:{nextEl:".swiper-button-next",prevEl:".swiper-button-prev"}});}; sliderInit(); ' type="text/javascript"></script> все нормально и слайдер 1 раз активируется. Но из других мест внутреннего кода функция sliderInit() недоступна, так как она была создана внутри onload. И когда я хочу опять ее запустить на новом сгенерированном DOM ее не существует. Как создать глобальную функцию внутри onload? Или как сделать эвентлисеннер на загрузку внешнего js? |
1.
function sliderInit(=> sliderInit = function(2. scriptElement.addEventListener('load', function(){ //... });|| document.addEventListener('load', function(){ // if(e.target ... }, true); Но вообще вам это всё не нужно. Просто вынесите саму функцию sliderInit куда-нибудь в свой основной скрипт. Для своего вызова она требует наличие загруженного слайдера, но объявить её можно когда угодно и где угодно. |
Просто вынести функцию не помогает,
<script> function sliderInit(){var swiper=new Swiper(".swiper-container",{lazy:!0,pagination:{el:".swiper-pagination",clickable:!0},navigation:{nextEl:".swiper-button-next",prevEl:".swiper-button-prev"}});}; </script> <script async src="https://heeg.ru/test/js/swiper.min.js" onload='sliderInit();' type="text/javascript"></script> вылетает ошибка "Swiper is not defined" Хотя помогает) просто сам ее из другого места раньше времени вызвал. Поставил проверку if (typeof Swiper== 'function') и ошибка ушла. Спасибо. |
Часовой пояс GMT +3, время: 23:29. |