8 / 16 / 2
Регистрация: 15.06.2015
Сообщений: 247
|
|
1 | |
Как сделать обработчик события на js?15.04.2019, 06:29. Показов 3994. Ответов 4
Метки нет (Все метки)
Пишу модуль...встал вопрос, как добавить событие через js.
Сейчас у меня через php обрабатывается событие на добавление в корзину и это событие вызывает js скрипт. Если добавлять в корзину ссылкой, которая сразу перекидывает в корзину, то js скрипт появляется, а если добавление в корзину идет через ajax, то мой js не появляется. Каким образом добавить в модуле обработчик события js?
0
|
15.04.2019, 06:29 | |
Ответы с готовыми решениями:
4
Как сделать обработчик события treeveiw? Как сделать свой обработчик события для нескольких TextBox Как сделать чтобы обработчик события работал со всеми элементами выбранными .querySelectorAll()? WTL как Сделать Мультиселект? Пересылка сообщений Обработчик события нажатия клавиши |
15.04.2019, 08:31 | 2 |
Для начала вы должны понять. Что PHP работает на стороне сервера, а JS на стороне клиента. По этому в "модуле" (я так понимаю в PHP) обработчик события JS (а все события JS происходят только в браузере) не сделать. По этому у вас два варианта (в обоих забыть про терминологию "событие js"):
1. Подобрать по функционалу событие на стороне сервера и реализовать необходимый алгоритм в обработчике этого события 2. Если это нечто должно работать на стороне браузера. У вас же ajax, соответственно и напрашивается выбор: вы получаете результаты ajax-запроса и обрабатываете их - добавьте туда необходимый функционал.
0
|
8 / 16 / 2
Регистрация: 15.06.2015
Сообщений: 247
|
|
15.04.2019, 08:45 [ТС] | 3 |
Это понятно. Но ajax никто не отменял.
Событие я подобрал. OnSaleBasketBeforeSaved
У меня по этому событию формируется dataLayer для электронной коммерции. Вот только если добавление в корзину происходит через ajax - то в GTM ничего не улетает. Это без проблем можно добавить в шаблон компонента, но у меня по задумке - все должно отрабатывать в стороннем модуле и никак не должно зависеть от компонента.
0
|
15.04.2019, 18:03 | 4 |
Т.е. вы хотите совсем не влезая в код других модулей выполнить дополнительный js (добавление в datalayer)?
Универсально не получится (особенно если учесть, что ajax возрвщать может и json). Иногда в битриксных компонентах (в js) инициализируются некоторые события - посмотрите в компонентах с котороыми работаете - может найдете и "подпишитесь". Вообще если не ошибаюсь на добавление в корзину есть какоето событие, на котрое подписывается "штатная" корзина в шапке. Подпишитесь на него, например. Но тут надо понимать, если на проекте кто -то кастомизирует шаблон и уберет это событие.... Ваш функционал работать не будет.
0
|
8 / 16 / 2
Регистрация: 15.06.2015
Сообщений: 247
|
|
15.04.2019, 18:10 [ТС] | 5 |
Да, уже нашел это событие. Пока не очень понял, как оно работает...точнее именно подписаться на него почему-то не получается.
Нашел другую функцию битрикса(точнее событие)...типо если отработал встроенный ajax. На него подписался, но это событие отрабатывает аж раз по 5 за 1 добавление в корзину. В итоге куча дублированных данных в dataLayer. Блин..и неужели те дорогущие модули в маркетплейсе не универсальные? да ни за что не поверю...
0
|
15.04.2019, 18:10 | |
15.04.2019, 18:10 | |
Помогаю со студенческими работами здесь
5
OpenGL как сделать обработчик события при наведении мышкой на фигуре в трехмерном пространстве? Directx 9.0 как сделать обработчик события при наведении мышкой на фигуре в трехмерном пространстве? ООП. Как в классе сделать обработчик события для тэга в виде метода будущего объекта? Как в одном обработчике события запустить другой обработчик события Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |