Отслеживаем ссылки в GA с Mootools

  • Содержание

Для того чтобы отслеживать количество переходов по внешним ссылкам и ссылкам на файлы у себя на сайте, я использую 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

Отслеживаем ссылки в GA с jQuery Организация экранных форм

Комментарии

Здесь пока никто не писал.