как Piwik отслеживает события кликов по ссылкам?

Я лично не использую Piwik. Я разработал инструмент / библиотеку JavaScript для создания системы меню в SharePoint, и кто-то, кто использует мою библиотеку, спрашивал о включении Piwik.

Из того, что я прочитал, я вижу, что Piwik ловит / отслеживает click события. Я подозреваю, что это происходит по умолчанию для тегов <a>, имеющих атрибут href.

Моя библиотека JS создает <div> элемента с событием onclick. Я прочитал и понял, что могу вручную запустить событие щелчка, используя функцию Piwik trackLink. Я хотел избежать этого по многим причинам.

Поэтому я хотел посмотреть, как именно Piwik отслеживает события кликов, чтобы я мог понять, как я могу включить это в более общий способ. Я подумал, что, может быть, я смогу сделать свое onclick событие подделкой, создав элемент <a> и выполнив его click событие, но не был уверен, что это сработает.


person IMTheNachoMan    schedule 03.08.2015    source источник


Ответы (2)


Взгляните на исходный код JS-трекера Piwik.

Например:

  • # P3 #
    # P4 # # P5 #
  • addClickListener()

        function addClickListener(element, enable) {
            addEventListener(element, 'click', clickHandler(enable), false);
    
            if (enable) {
                addEventListener(element, 'mouseup', clickHandler(enable), false);
                addEventListener(element, 'mousedown', clickHandler(enable), false);
                addEventListener(element, 'contextmenu', clickHandler(enable), false);
            }
        }
    
person Matthieu Napoli    schedule 12.08.2015
comment
Дело в том, что я думаю enableLinkTracking() работает только со ссылками, которые существовали при загрузке Piwik. Как мне заставить его отслеживать ссылки, которые были созданы динамически после загрузки Piwik? Я пробовал _paq(['trackEvent', url, 'link']);, но это не работает. - person IMTheNachoMan; 12.08.2015

IMTheNachoMan, вы были очень близки к решению. В Matomo (Piwik) включен Javascript trackEvent(category, action, [name], [value]). С событием onclick и _paq.push(['trackEvent', 'Event Category', 'Event Action', 'Event Name']) вы можете его использовать.

См. Это решение здесь с фрагментами кода и снимками экрана: http://pen-ultima.blogspot.com/2018/01/matomo-internal-link-track.html

person pemente    schedule 15.01.2018
comment
Когда у вас будет достаточно репутации, вы должны добавить этот ответ в качестве комментария к этому ответу. Добро пожаловать в SO. Спасибо за ответ. Пожалуйста, завершите тур и наслаждайтесь ТАК ;-) - person ZF007; 15.01.2018