2013-10-21 5 views
7

Я пытаюсь добавить отслеживание событий аналитики в событие onclick для ввода ввода в форме.Увольнение события Google Analytics в форме submit

Я пробовал несколько разных примеров и ссылался на пару разных сообщений SO, чтобы добраться до этой точки. Я могу заставить onclick либо отправить форму ИЛИ запустить событие отслеживания, но не то, и другое.

Первый пример: (Направляет форма + журналы на консоли, но не срабатывает событие)

<!-- Analytics tracking code --> 

<form action="test.php" id="form" method="post"> 

    <input type="text" name="name" id="name"> 

    <!-- Submits form + logs to console but doesn't fire event --> 

    <input type="submit" name="submit" value="Submit" onclick=" 
     var _this = this; 
     _gaq.push(
      ['_trackEvent', 'Forms', 'Submit', 'Home Contact'], 
      function() { 
       console.log('submitting'); 
       $(_this).parents('form').submit(); 
      } 
     ); 
    "> 

</form> 

Второй пример: (Пожары событий + журналы на консоль, но не представляет форму)

<!-- Analytics tracking code --> 

<form action="test.php" id="form" method="post"> 

    <input type="text" name="name" id="name"> 

    <!-- Fires event + logs to console but doesn't submit form --> 

    <input type="submit" name="submit" value="Submit" onclick=" 
     var _this = this; 
     _gaq.push(['_set','hitCallback',function(){ 
      console.log('submitting'); 
      $(_this).parents('form').submit(); 
     }]); 
     _gaq.push(
      ['_trackEvent','My category','My action'] 
     ); 
     return !window._gaq; 
    "> 

</form> 

Я также обнаружил, что если я добавлю return false в конец первого примера события onclick, он упустит отслеживание событий аналитики, но не отправит форму.

ответ

5

(Это действительно должно быть FAQ ...)

Google Analytics записывает данные, запрашивая изображения с сервера аналитики, с данными отслеживания в качестве параметров по запросу изображения. Если новая страница отображается в текущем окне сразу после _trackEvent или _pageView, запрос изображения может быть отменен и данные не будут записаны.

Обычный шаблон - добавить небольшую задержку перед загрузкой новой страницы или отправкой формы.

Попробуйте

<input type="submit" name="submit" value="Submit" onclick=" 
    var _this = this; 
    _gaq.push(['_trackEvent', 'Forms', 'Submit', 'Home Contact']); 
    setTimeout(function() {$(_this).parents('form').submit()}, 150); 
    return false;" 
> 

Я предпочитаю привязывать к JQuery представить события на самой форме, как

$('#form').submit(function(e){ 
    e.preventDefault(); 
    _gaq.push(['_trackEvent', 'Forms', 'Submit', 'Home Contact']); 
    var form = this; 
    setTimeout(function(){ form.submit()}, 150); 
}); 
+0

Я изменил это, чтобы иметь тайм-аут 1 сек + добавлен недостающий [в аналитику нажмите код. Отслеживание событий работало, но форма не была отправлена. – James

+1

Извините за опечатку (и пропущенную задержку на setTimeout!) - требуется только небольшая задержка, похоже, работает 150 мс. Я также добавил альтернативный пример. – mike

+0

Я до сих пор не могу заставить это работать, оба из них увидят событие analytics, но не отправят форму. Я не могу не чувствовать, что мне не хватает чего-то очевидного. – James

Смежные вопросы