Skip to content

Instantly share code, notes, and snippets.

@craigerskine
Created August 16, 2010 20:01
Show Gist options
  • Save craigerskine/527627 to your computer and use it in GitHub Desktop.
Save craigerskine/527627 to your computer and use it in GitHub Desktop.
JS Analytics Event Tracking for Downloads/Files
document.onclick = function(event) {
event = event || window.event;
var target = event.target || event.srcElement,
targetElement = target.tagName.toLowerCase();
if (targetElement == "a") {
var href = target.getAttribute("href"),
urlHost = document.domain.replace(/^www\./i,"");
var urlPattern = "^(?:https?:)?\/\/(?:(?:www)\.)?" + urlHost + "\/?";
eventCheck(href,urlPattern);
}
function eventCheck(href,urlPattern){
if ((href.match(/^https?\:/i)) && (!href.match(urlPattern))){
if (href.match(/^.*\.(pdf|jpg|png|gif|zip|mp3|txt|doc|rar|js|py)$/i)) {
_gaq.push(['_trackEvent', 'Download', 'click', href]);
} else {
_gaq.push(['_trackEvent', 'External', 'click', href]);
}
} else if (href.match(/^mailto\:/i)) {
_gaq.push(['_trackEvent', 'Email', 'click', href.substr(7)]);
} else if (href.match(/^.*\.(pdf|jpg|png|gif|zip|mp3|txt|doc|rar|js|py)$/i)) {
_gaq.push(['_trackEvent', 'Download', 'click', href]);
}
}
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment