Встроить свое поведение в виджет

Используйте обработчики событий, на которые можно повеситься при помощи настройки bindEvents.

Например:

<script type="text/javascript">
    var handleTWFpostRepaint = function(params) {
        // this = инстанс виджета, в котором было сгенерировано событие
        console.info([this, params]);
    }
</script>

<script defer="defer" data-timepad-widget-v2="event_register" data-timepad-customized="АЙДИ_ВАШЕЙ_КАСТОМИЗАЦИИ" src="//timepad.ru/js/tpwf/loader/min/loader.js">
    (function(){return {
        "event":{"id":"АЙДИ_ВАШЕГО_СОБЫТИЯ"}, 
        "debug": true,
        "bindEvents": {
            "postRepaint": "handleTWFpostRepaint"
        }
    };})();
</script>

На что вешаться

Если хочется повесить обработчик на элементы (например свой onClick), то самое подходящее место — switchedToNewRenderTarget, где следует повесить свои обработчики при помощи метода .on(). Сам виджет именно так и поступает.

Два других значимых события — это preRepaint и postRepaint. В аргументы передается информация, на какой роут был осуществлен переход, и это наиболее удобное место для добавления кода отслеживания целей. Вы можете использовать console.info([arguments, this]); в качестве обработчика, чтобы посмотреть, какие данные передаются.

Событие preReady вызывается однократно после загрузки, но до исполнения основного кода виджета, вскорости после обработки настроек. В нём можно переопределить код виджета при помощи this.someFunction = function() { ... }.bind(this). В нём же можно напрямую повесить обработчики остальных событий, вместо того, чтобы использовать bindEvents: this.obs.listen('preRepaint', function(params) { ... }.bind(this));

Обработка ошибок

Будьте внимательны при написании кода обработчиков! Необработанные исключения нарушат работу виджета. Обязательно проверяйте существование объектов, прежде чем обращаться к их методам.

Будьте особенно внимательны со скриптами, предназначенными для отслеживания действий пользователя. Некоторые блокировщики рекламы вырезают их. Поэтому в примерах с Яндекс.Метрикой мы и рекомендуем писать так:

window.yaCounter123 && window.yaCounter123.reachGoal("GOOOOAL", "your_label");