Я использую script для отслеживания исходящих ссылок в течение нескольких месяцев. script WORKS, но в отчете, создаваемом Google Analytics, многие URL-адреса имеют конечный ": 80" (номер порта по умолчанию) в конце. Читайте дальше для более подробной информации.
Возможно, важно отметить, что веб-сайт, отслеживающий эти исходящие ссылки, обладает огромным количеством исходящего трафика (умножьте свою фантазию на ∞).
Цель script
Он отслеживает ВСЕ исходящие ссылки и помещает их как "Исходящие ссылки" в Google Analytics.
script сильно комментируется и содержит несколько экземпляров console.log(), чтобы помочь отладке (они сохраняются в комментариях).
"Исходящие ссылки" показывают на GA хорошо, под:
Контент > События > Топ-события > "Исходящие ссылки" [щелкните по нему] > [отчет, показывающий все URL-адреса нажатыми]
Проблема
В отчете "Исходящие ссылки", где я получаю все ссылки, которые были нажаты, я получаю ": 80" в конце как минимум 2/3 всех сообщений (возможно, больше). GA рассматривает http://example.com и http://example.com:80 как разные ссылки, разделяя их в отчете. Это, конечно, не желательно.
Стоит упомянуть:
Ссылки, которые заканчиваются на ": 80" , всегда имеют больше хитов, чем их эквивалент, без ": 80" , что-либо с 40% до 60% больше.
Требуемое решение
- Объединить ссылки, которые заканчиваются на ": 80" с теми, у кого нет, OR
- Избегайте добавления ссылок: "80" к ссылкам, если это возможно.
- Бонус: Поймите, почему мы получаем ссылки, заканчивающиеся на ": 80" вообще.
script
// Outbound Link Tracking with Google Analytics
// Requires jQuery 1.7 or higher (use .live if using a lower version)
$(function() {
$("a").on('click',function(e){
var url = $(this).attr("href");
// Console logs shows the domain name of the link being clicked and the current window
// console.log('e.currentTarget.host: ' + e.currentTarget.host);
// console.log('window.location.host: ' + window.location.host);
// If the domains names are different, it assumes it is an external link
// Be careful with this if you use subdomains
if (e.currentTarget.host != window.location.host) {
// console.log('external link click');
// Outbound link! Fires the Google tracker code.
_gat._getTrackerByName()._trackEvent("Outbound Links", e.currentTarget.host, url, 0);
// Checks to see if the ctrl or command key is held down
// which could indicate the link is being opened in a new tab
if (e.metaKey || e.ctrlKey) {
// console.log('ctrl or meta key pressed');
var newtab = true;
}
// If it is not a new tab, we need to delay the loading
// of the new link for a just a second in order to give the
// Google track event time to fully fire
if (!newtab) {
// console.log('default prevented');
e.preventDefault();
// console.log('loading link after brief timeout');
setTimeout('document.location = "' + url + '"', 100);
}
}
/*
else {
console.log('internal link click');
}
*/
});
});