Отслеживаем ссылки в GA с Mootools
12 сентября 2010 года
Google Analytics
Google Analytics
- Содержание

Для того чтобы отслеживать количество переходов по внешним ссылкам и ссылкам на файлы у себя на сайте, я использую LinkTracker для Mootools. Работает он аналогично jQuery версии. Подключается следующим образом:
window.addEvent("domready", function(){
new LinkTracker({
parent : null,
inDomain : true,
event : 'mouseup',
fileTypes : [ 'pdf', 'zip', 'rar', 'tgz', 'gz','gzip', 'jpg', 'png', 'svg', 'gif', 'doc', 'eps', 'xls', 'ppt', 'xls', 'txt', 'vsd', 'js', 'css', 'exe', 'wma', 'mov', 'avi', 'wmv', 'mp3']
});
});
Опции
- inDomain определяет, отслеживать ли ссылки внутри поддоменов. Установив в true, для example.com и subdomain1.example.com ссылки на subdomain2.example.com не будут считаться внешними.
- fileTypes - список расширений файлов
- event - событие, к которому привязывается обработчик (click, mousedown, mouseup)
- parent - контейнер ссылок. По умолчанию, null (document.body).
Исходный код
var LinkTracker = new Class({
Implements: [Options],
options: {
parent : null,
inDomain : true,
event : 'mouseup',
fileTypes : [ 'pdf', 'zip', 'rar', 'tgz', 'gz','gzip', 'jpg', 'png', 'svg', 'gif', 'doc', 'eps', 'xls', 'ppt', 'xls', 'txt', 'vsd', 'js', 'css', 'exe', 'wma', 'mov', 'avi', 'wmv', 'mp3']
},
initialize: function(options){
var that = this;
that.setOptions(options);
var parent = that.options.parent == null ? document.body : that.options.parent;
$(parent).getElements('a').each(function(a){
var href = a.get('href');
// if no href or it starts with #
if (!href || /^#/.test(href)) return;
// if it is mailto link
if (/^mailto:/.test(href)) {
a.store('ga_category', 'links');
a.store('ga_action', 'mailto');
}
// otherwise
else {
var wHost = that.options.inDomain ? location.host.match(/\w+\.\w+$/) : location.host,
file_type = that.options.fileTypes.indexOf( a.pathname.substring( a.pathname.lastIndexOf('.')+1 ).toLowerCase() );
// if is not downloadable file
if (file_type == -1){
var aHost = a.host;
// if is relative url
if (!aHost || aHost == '..') return;
// if is internal absolute url
if (that.options.inDomain){
if(aHost.indexOf(wHost) != -1) return;
}
else {
if(aHost == wHost) return;
}
a.store('ga_category', 'links');
a.store('ga_action', 'outgoing');
}
// if is file
else {
a.store('ga_category', 'downloads');
a.store('ga_action', that.options.fileTypes[file_type]);
}
}
/* a.set('html', a.get('html') + ' (+trackevent)'); */ // for debugging..
a.addEvent(that.options.event, that.track );
/* a.fireEvent(that.options.event); */ // for debugging also..
});
},
track: function(){
var category = this.retrieve('ga_category'),
action = this.retrieve('ga_action');
if (!category || !action) return;
/* console.log(['pageTracker._trackEvent(', category, ', ', action, ', ', this.get('href')].join(''), ');'); */ // for debugging..
if (typeof(pageTracker) == 'object') pageTracker._trackEvent(category, action, this.get('href'));
else if(typeof(_gaq) == 'object') _gaq.push(['_trackEvent', category, action, this.get('href')])
else throw('Google Analytics tracking object not found'); // if you need to throw errors;
}
});
Демо-версия, ссылка для скачивания, более подробное описание работы скрипта.
Понравилась статья? Подпишись на RSS.
Советую почитать:
Отслеживаем ссылки в GA с jQuery
Подсветка кода с Lighter.js
Правильный Mootools код
Google Analytics на вашем сайте
Асинхронная загрузка Google Analytics
Комментарии
Здесь пока никто не писал.