I wanted to try and find a way to track all of the outgoing links on my blog, without haven to modify the html of the link. What I found was that using javascript listeners would probably be the best solution. Actually this technique can be used for a lot of stuff, but this is what I did:
// Cross-browser implementation of element.addEventListener()
function addListener(element, type, expression, bubbling) {
bubbling = bubbling || false;
if (window.addEventListener) { // Standard
element.addEventListener(type, expression, bubbling);
return true;
} else if (window.attachEvent) { // IE
element.attachEvent('on' + type, expression);
return true;
} else return false;
}
//This is what i want to do whenever someone clicks on the page
function itHappened(evt) {
//Get the clicket element
var tg = (window.event) ? evt.srcElement : evt.target;
//If it is an A element
if (tg.nodeName == 'A') {
//And it is not an internal link
if (tg.href.indexOf(location.host) == -1) {
//Replace all odd characters, so that it works with Analytics Niavgation analysis
var url = tg.href.replace(/[^a-z|A-Z]/g, "_");
var txt = tg.innerHTML.replace(/[^a-z|A-Z]/g, "_");
var str = '/outgoinglink/-' + txt + '-' + url;
try {
//Track it
urchinTracker(str);
}
catch (err) {
//alert('error: ' + err);
}
}
}
}
//Add the click listener to the document
addListener(document, 'click', itHappened);
I hope you can use it. Any comments or advice is very welcome 🙂