@IliaMal

Почему не отрабатывает js в шаблоне загруженным через fetch()?

Здравствуйте.

В карточке товара при смене характеристик товара заново подгружаю catalog.element с нужными параметрами через ajax (если точнее то через метод js fetch())

Контент подгружается корректно, но скрипты не выпоняются. При том проблема не в отсутствии элементов в DOM, а в чем то другом. Даже console.log(); написанный в template.php не выполняется.

Кеширование catalog.element отключил.

Может надо что то дописать в fetch(), что бы выполнялись подгруженные скрипты?
  • Вопрос задан
  • 82 просмотра
Пригласить эксперта
Ответы на вопрос 3
SilenceOfWinter
@SilenceOfWinter
та еще зажигалка...
ты навешиваешь обработчики событий на конкретные элементы и при перезагрузке контента они удалятся вместе с dom элементами к которым привязаны. хз как в нативном js это делается, в jquery решается так:
$('#ajax-container').on('click', '.inner-element', function (event) {...});

ajax-container - контейнер в который загружается контент.
inner-element - загружаемый элемент
Ответ написан
@zkrvndm
Боты, парсеры, расширения
Что-то дописать) Не все так просто. В подгруженном html-коде отсутствуют обработчики, в этом проблема. Вам надо заново установить все необходимые для работы скриптов обработчики заново.
Ответ написан
Alexandroppolus
@Alexandroppolus
Если я правильно понял, fetch возвращает некий хтмл, который потом втыкается в someElement.innerHTML? Тогда все имеющиеся в этом хтмл теги < script > просто добавятся, но не отработают. Надо найти их как someElement.querySelectorAll('script') и каждый "передобавить" вручную, тогда код в них отработает.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы