Всем привет, есть плагин (auto dialog), в старинной CMS (drupal 7), который собирает форму по клику, без перезагрузки страницы, т.е. с помощью ajax. Мне нужно слушать событие отправки с этой формы и запускать функцию (цели метрики).
Я решил, что в этом мне поможет observe, но что пошло не так. Форму я поймал, событие повесил, в firefox вижу что висит event и мой submit. Но событие не наступает. Форма уходит, а submit'а нет. И функции нет.
Почему так?
let target = document.querySelector('body');
let observer = new MutationObserver(function (mutations) {
mutations.forEach(function (mutation) {
let form = document.querySelectorAll('.webform-client-form-176')
if (mutation.type == 'childList' && mutation.addedNodes[0] != undefined && mutation.addedNodes[0].classList.contains('autodialog-content')) {
let form = document.querySelector('.webform-client-form-176');
console.log(form);
$('.webform-client-form-176').on("submit", function () {
console.log('test-test-test');
});
// form.addEventListener('submit', function (e) {
// console.log('test-test-test--234');
// });
}
});
});
let config = { attributes: true, childList: true, characterData: true };
observer.observe(target, config);
// observer.disconnect();
form.addEventListener
Почему-то не работает. Пишет, что не может прочитать свойство addEventListener, хотя я вроде выцепил правильный селектор.
Добавил тег drupal, потому что возможно, кто-то в курсе темы и уже сталкивался с таким. Есть предположение, что механизм отправки писем там не стандартный. Возможно данные формы сначала попадают в админку, а уже после отправляется письмо друпалом. Я не знаю.
В принципе, я просто хочу убедится, что с точки зрения кода, я всё сделал правильно. Потому что я просто не понимаю, что не так. Задачу свою я решил несколько иначе. С помощью предоставляемого функционала друпала. Просто хочу разобраться, где были ошибки.