Как создать глобальную функцию внутри другой функции?
Есть огромный внешний 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, время: 07:11. |