От JavaScript API:
Для асинхронного отслеживания, настройки и отслеживания вызовов помещаются в глобальный массив _paq для исполнения, независимо от асинхронной загрузки piwik.js. Формат:
_paq.push([ 'API_method_name', parameter_list ]);
Так что это, кажется, будет хорошо на вашем конце.
Когда вы говорите о ненадежном поведении, это возможно, когда вы обновляете страницу (просто bash F5), вы обходите загрузку файла сценария, так как он уже кэшируется предыдущим запросом. И тогда этот звонок _paq
может быть undefined
. Попробуйте использовать ctrl + F5, чтобы увидеть, изменилось ли поведение.
Также обратите внимание на начальную часть: var _paq = _paq || [];
, которая определяет ранее заполненный массив или пустой. Это не больно, чтобы поставить это перед вашим кодом, но вы должны обратить внимание на закрытие:
(function(){
var _paq = _paq || [];
_paq.push(['trackEvent', 'vendor', 'VND001' ,'value']);
}());
Теперь то, что вы обычно будет сделать, это получить текущий трекер первый:
var piwikTracker = Piwik.getTracker(12, 'http://example.com/piwik/');
//piwikTracker.setSiteId(12);
//piwikTracker.setTrackerUrl('http://example.com/piwik/');
piwikTracker.trackEvent('vendor', 'VND001' ,'value');
Но я не совсем уверен, что это только, связанных с Piwik 2.16.1 или ранее. Не стесняйтесь их тестировать и дайте мне знать ^^