Приостановить событие analyti c в многоступенчатой ​​форме Javascript, если на том же шаге, при возврате - PullRequest
0 голосов
/ 18 июня 2020

Учитывая многоступенчатую форму с кнопкой следующий и назад , я отслеживаю события аналитики 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 функции, если пользователь вернется назад, а затем снова перемотать вперед, не пройдя шаг, на котором они изначально приземлились.

...