Как зафиксировать только одно событие, а остальные проигнорировать?
Привет.
У меня на сайте есть калькулятор, нужно отследить взаимодействие с ним и отправить событие в Яндекс Метрику. Если поставить отправку события на фокусе элемента или на появлении итоговой цены, то события будут отсылаться очень много раз, т.к. пользователи часто меняют параметры и данные. Можно как-то отправить только одно событие?
P.s. Калькулятор выводит цену, как меняется значение хоть одного поля.
lemme предложил рабочий вариант, но обычно для таких нужд используют listener который по завершению своей задачи снимают с элемента, removeEventListener. Я пример приводить не буду, думаю все понятно - вешаете нужные вам listeners и один лишний, который будет ждать клика, после чего будет выполнять reachGoal и самоликвидироваться )
function listener() {
console.log('This message will get logged only once');
Element.removeEventListener(event, listener);
};
Element.addEventListener(event, listener);
stopImmediatePropagation,
upd: не дочитал постановку, в твоем случае я бы рекомендовал использовать евенты вроде window.onunload т.е. при покидании страницы,
либо вариант 2 - таймауты
каждый раз при изменении поля запуская таймаут секунд на 20 например и перезапускай его при повторных событиях, а в случае срабатывания отправляй метрику