Отслеживание событий кнопки с помощью analytics.js

Я использую новый GA analytics.js для отслеживания своего веб-сайта, который отлично срабатывает. Я пытаюсь отслеживать нажатие кнопки (ссылку на внешний веб-сайт), убедившись, что она открывается в новом окне, чтобы у нас было время для ее отслеживания.

<button class="knapp" id="b2" onclick="window.open('https://site.com');" 
target="_blank" type="button">Text</button>

Согласно рекомендациям Google, теперь я могу отслеживать это с помощью JS.

Следовательно, я обновил код, чтобы он соответствовал идентификатору моей кнопки и событиям, а затем поместил его в свой заголовок.

<script type="text/javascript">
var downloadLink = document.getElementById('b2');
addListener(downloadLink, 'click', function() {
ga('send', 'event', 'External_link', 'click', 'KL-FB');
});

function addListener(element, type, callback) {
 if (element.addEventListener) element.addEventListener(type, callback);
 else if (element.attachEvent) element.attachEvent('on' + type, callback);
}
</script>

Однако вообще не заводится. У меня есть «нормальный» трекер событий по обычной ссылке, который срабатывает просто отлично, но, судя по тому, что я вижу в своей консоли, он даже не пытается.


person user977101    schedule 23.06.2014    source источник


Ответы (1)


Есть несколько проблем с вашим кодом:

  1. Ваша функция addListener в <head> выполняется до рендеринга элемента b2. Есть несколько вариантов решения этой проблемы: поместить скрипты внизу страницы, вызвать код присоединения при загрузке или обернуть его в файл jQuery document.ready. Об этом есть хороший stackoverflow.
  2. Ваше встроенное событие onclick на кнопке срабатывает до отправки события. Используйте функцию Google Analytics hitCallback, чтобы перенаправить пользователя на следующую страницу < em>после того, как ga получит событие.

Это будет выглядеть так:

<script type="text/javascript">
    var downloadLink = document.getElementById('b2');
    addListener(downloadLink, 'click', function() {
        ga('send', 'event', 'External_link', 'click', 'KL-FB', {
            'hitCallback': function(){
                document.location = 'https://site.com';
            }
        });
    });

function addListener(element, type, callback) {
 if (element.addEventListener) element.addEventListener(type, callback);
 else if (element.attachEvent) element.attachEvent('on' + type, callback);
}
</script>
person Blexy    schedule 23.06.2014
comment
Идеально! Большое спасибо, и извините, что не подумали о порядке вещей. - person user977101; 23.06.2014