2011-02-08 2 views
4

Я хотел бы отслеживать, как часто пользователи скачивают файлы с помощью событий Google Analytics, но даже несмотря на то, что события, похоже, были отправлены, отслеживание .gif похоже не подходит.Почему событие Google Analytics не отправлено из onSubmit?

Для загрузки файлов пользователи должны заполнить краткую форму. Информация, введенная в эту форму, проверяется функцией checkSubmit() (которая возвращает false, когда введенная информация является недопустимой или неполной, true, когда информация хороша для отправки). После отправки пользователь перенаправляется в файл.

<script> 
function checkSubmit() { 
    … 
    if(dataIsGood) { 
     _gaq.push(['_trackEvent', 'Download', 'the_filename.xxx']); 
     return true; //allow the form to submit 
    } else { 
     _gaq.push(['_trackEvent', 'Form', 'info not okay']); 
     return false; //keep the form from being submitted 
    } 
} 
</script> 

<form action="/form/emailcaptureform" method="post" onSubmit="return checkSubmit();"> 
… </form> 

В консоли Chrome, то Google Analytics Tracking Debugger говорит Загрузка отслеживание события маяков были отправлены, но консоль говорит, что не удалось загрузить ресурс __utm.gif

Это происходит только с событиями толкнули перед отправкой формы. События работать в другом месте на моем сайте, в том числе события формы толкнул, когда информация форма не хорошо (в else блок выше)

Analytics snippet, кажется, работает, принимая _trackPageview с и _trackEvent с.

URL-адрес запроса для __utm.gif хорошо сформирован: копирование и вставка URL-адреса с выхода gadebug в панель местоположений возвращает __utm.gif без заминки.

Событие толкается без проблем при нажатии из другого элемента. Например:

<a href="#" onClick="_gaq.push(['_trackEvent', 'Download', the_filename.xxx']);">Event!</a> 

Раздвигая событие, делая паузу в течение нескольких секунд, а затем возвращение true, кажется, не имеют никакого эффекта Внеположного добавив паузу перед отправкой формы.

У вас есть решения или предложения?

+0

Кажется, что есть конфликт между

представления и аналитика дело с событием: событие не регистрирует, потому что она нуждается чтобы выполнить успешный запрос GET, и этот запрос GET прерывается запросом POST . Любая идея, как разрешить этот конфликт? – lucasrizoli

+0

Способы обойти этот конфликт запросов: 1) отправить данные формы асинхронно или 2) прервать событие отправки в форме, удерживать его до обработки события GA, а затем предоставить GA возможность представления формы. – lucasrizoli

ответ

4

Javascript не имеет резьбы. Когда вы выполняете _gaq.push, вы толкаете что-то в очередь, которую нужно обработать позже. Однако ваш код возвращает true до «позже», а код GA никогда не запускается (потому что следующее действие - переход на следующую страницу).

Я бы предположить, что это может быть подходящий момент использовать традиционную или синхронного слежения с ._trackEvent

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