@vinegred

Как отправлять событие onclick только один раз?

Здравствуйте!

Создал события для Яндекс.Метрики. Проблема в том, что цель достигается всякие раз, когда был клик по div. Нужно чтобы засчитывался только первый клик для каждого уникального пользователя (или сеанса). События посылаю так:

onclick="startCalculatorYandex();startCalculatorGoogle()"

<script>
          function newOrderYandex() {
            yaCounter345345345.reachGoal('newOrder');
            return false;
          };
          function startCalculatorYandex() {
            yaCounter345345345.reachGoal('startCalculator');
            return false;
          };
          function newOrderGoogle() {
            gtag('event', 'New order', {'event_category': 'button', 'event_action': 'neworder'});
          };
          function startCalculatorGoogle() {
            gtag('event', 'Start Calculator', {'event_category': 'button', 'event_action': 'startcalculator'});
          };
        </script>


Подскажите, пожалуйста)
  • Вопрос задан
  • 1453 просмотра
Решения вопроса 1
GM_pAnda
@GM_pAnda
Бездельник
Ну как вариант можно создать глобальную переменную. (не очень хороший вариант)
Если используете jQ, есть обработчик .one()
$('#foo').one('click', function(){
  alert('Вы нажали на элемент "foo"');
});

И вообще конечно плохой тон вешать обработчики через (onclick) прям в HTML.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Vlad_IT
@Vlad_IT Куратор тега JavaScript
Front-end разработчик
Сохраняете состояние клика в localStorage и при клике проверяете
Ответ написан
Комментировать
sergiks
@sergiks Куратор тега JavaScript
♬♬
Слушатель события клика вешать из JS, оттуда же снимать при первом же клике:
function onOrderClick() {
  this.removeEventListener('click', onOrderClick);
  startCalculatorYandex();
  startCalculatorGoogle();
}

document.getElementById('tot-samy-div-id').addEventListener('click', onOrderClick);
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы