Почему событие Google Analytics не отправлено с onSubmit? - PullRequest
4 голосов
/ 09 февраля 2011

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

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

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

Фрагмент Analytics чтобы работать, принимая _trackPageview с и _trackEvent с.

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

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

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

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

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

1 Ответ

4 голосов
/ 27 марта 2011

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

...