jQueryでアウトバウンド リンクを自動設定
Google アナリティクスのアウトバウンド リンクを自動で設定
ユニバーサルアナリティクスのトラッキングコードではtrackOutboundLinkが動作しないので注意。
jQuery
/**
* trackOutboundLink
* @param {string} link
* @param {string} category
* @param {string} action
*/
function trackOutboundLink(link, category, action) {
try {
_gaq.push(['_trackEvent', category, action]);
} catch(err){}
// ポップアップブロック対応
if (link.target == '_blank'){
var new_window = window.open('', '_blank');
}
setTimeout(function() {
// 別窓
if (link.target == '_blank'){
new_window.location.href = link;
} else {
document.location.href = link.href;
}
}, 100);
}
$(function () {
$('a').each(function(i){
var link_type = 'none';
var url = $(this).attr('href');
if (url) {
// 外部リンク
if (url.match(/^https?:\/\//)) {
// ドメイン不一致
if (! url.match(document.domain)) {
link_type = 'outbound';
$(this).attr('onClick', 'trackOutboundLink(this, \'Outbound Links\', \'' + url + '\'); return false;');
}
}
// ダウンロード
if (link_type == 'none') {
if (url.match(/(.*)\.(pdf|zip|exe|gz|lzh|csv|docx?|xlsx?|pptx?)$/i)) {
link_type = 'download';
$(this).attr('onClick', 'trackOutboundLink(this, \'Download Links\', \'' + url + '\'); return false;');
}
}
}
});
});
非同期処理後に別ウィンドウで開くと、ほぼ全てのブラウザでポップアップブロック状態になるため、事前に空ウィンドウを開いておくことが必要。
サンプル