Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Получить событие через функцию-свойство объекта (https://javascript.ru/forum/dom-window/83041-poluchit-sobytie-cherez-funkciyu-svojjstvo-obekta.html)

romveld 02.09.2021 00:38

Получить событие через функцию-свойство объекта
 
Всем привет! Кто в курсе, как получить событие через функцию-свойство объекта. Код такой, тут вызывается событие - https://prnt.sc/1qzgkox. Тут происходит его обработка - https://prnt.sc/1qzgmdv. В обычном addEventListener() всё понятно, а как тут добрать до элемента, вызвавшего событие. Это Opencart, функция wishlist.add встроенная, переписывать её логику не хотелось бы, тем более, что это затронет конролеры, модель и ещё какую-нибудь абру-кадабру. Если существует способ подтащить событие в success средствами JS подскажите, буду очень признателен. Заранее спасибо!

Aetae 02.09.2021 02:27

romveld, испоняющееся прямо сейчас событие лежит в window.event, но во-первых оно deprecated и его могут когда-нить выпилить, а во вторых success исполнится не в момент вызова, а когда придёт ответ, так что это не поможет без доп. подготовки.
Если ты не можешь переписать add, то что именно ты переписать можешь, не очень понятно?

Если тебе нужна именно кнопка - ты можешь зафигачить костыль от обратного:
const currentButton = document.querySelector(`button[onclick="wishlist.add('${product_id}');"]`);
alert(currentButton);

Но это сработает только если такая кнопка одна на продукт.)

romveld 02.09.2021 09:14

Нет, переписать можно всё, просто это будет сопровождаться большой вознёй, хотелось сократить количество усилий, но если простого решения нет, то придётся что-то выдумывать. Спасибо за ответ!

Aetae 02.09.2021 09:40

romveld, и таки я всё равно не понял, что именно можно переписать "без возни"?
Часть, что лежит в success? Тогда чем это отличается от переписывания add? Сверху add кладёшь const event = window.event; в success юзаешь...

romveld 02.09.2021 11:27

Вот это помогло, спасибо! Я правда ещё один способ нашёл подтянуть дата-атрибут элемента, по которому я кликаю и сравнить его с идентификатором, который я получал с сервера, но это уже ладно. В общем сложностей никаких, просто не сразу вник как это проще сделать, пошёл по сложному пути, думал менять способ вывода данных с сервера, а это сопряжено с допилом функций в контроллерах, моделях и т. п. Короче проблема решена, благодарю!


Часовой пояс GMT +3, время: 18:12.