Учитывая многоступенчатую форму с кнопкой следующий и назад , я отслеживаю события аналитики c через функцию, когда пользователь просматривает форму, чтобы узнать потенциальное падение формы, однако, если пользователь возвращается на шаг назад, а затем снова вперед, я не хочу запускать функцию отслеживания, мне нужно как-то приостановить ее, чтобы предотвратить неточное количество записываемых событий:
const steps = document.querySelectorAll('.form-step')
const totalSteps = steps.length
let currentStep = 1,
incrementStepBy = 1,
currentProgress = 100 / totalSteps
/* eslint-disable max-lines-per-function */
function goToStep(el, direction) {
steps[currentStep - 1].style.display = 'none'
// next
if (direction == 'next') {
// if form is invalid, prevent going forward
if (!validateForm()) {
steps[currentStep - 1].style.display = 'block'
return
}
currentStep += incrementStepBy
// track events going forward
trackGaEvent(`Step ${currentStep} Loaded:`)
} else {
// back
currentStep -= incrementStepBy
}
steps[currentStep - 1].style.display = 'block'
}
function trackGaEvent (trigger, name = 'Default') {
console.log(trigger, name)
}
Я попытался создать переменную, чтобы приостановить выполнение моей trackGaEvent
функции, если пользователь вернется назад, а затем снова перемотать вперед, не пройдя шаг, на котором они изначально приземлились.