2012-12-17 36 views
0

我可能搞錯了onClick javascript在leanstartupcircle.com。我試圖用javascript添加鏈接跟蹤到我用屬性標記的所有出站鏈接。無論我做什麼都阻止target="_blank"運作,並且可能不會觸發事件。target =「_ blank」由於谷歌Analytics(分析)跨域javascript鏈接跟蹤未打開新頁面

另一條信息target="_blank"在分期和開發中工作正常,因爲我沒有在這些服務器上顯示Google Analytics分析的初始代碼。這就是爲什麼我相信我的JavaScript不正確。

可以使用更好的一雙眼睛。我究竟做錯了什麼?

function parseUrl(url) { 
    var a = document.createElement('a'); 
    a.href = url; 
    return a; 
}; 

function getDomain(url) { 
    hostname = parseUrl(link).hostname 
    splitHostname = hostname.split('.'); 
    if (splitHostname.length > 2) { 
     domain = splitHostname[1] // Most likely the domain 
    } else { 
     domain = splitHostname[0] 
    }; 
    return domain; 
}; 

function trackLinks() { 
    // Setup outbound link tracking and push events to GA based on link attribute linkTracking 
    $('a').each(function() { 
     link = $(this).attr('href'); 
     linkTracking = $(this).attr('linkTracking'); 
     if (linkTracking) { 
      category = linkTracking.toLowerCase() 
      action = getDomain(link); 
      label = link; 
      $(this).attr('target', '_blank').attr('onClick', '_gaq.push(["_link", "' + link + '"]); return false; ' + 
                  'recordOutboundLink(this, "' + category + '", "' + action + '", "' + label + '"); return false;'); 
     }; 
    }); 
}; 

這是我的谷歌分析代碼。谷歌爲了使用跨域跟蹤提出了一些修改建議:

var _gaq = _gaq || []; 
var pluginUrl = 
'//www.google-analytics.com/plugins/ga/inpage_linkid.js'; 
_gaq.push(['_require', 'inpage_linkid', pluginUrl]); // Enhanced Link Attribution 
_gaq.push(['_setAccount', 'UA-30468280-1']); 
_gaq.push(['_setDomainName', 'leanstartupcircle.com']); 
_gaq.push(['_setAllowLinker', true]); 
_gaq.push(['_trackPageview']); 

(function() { 
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; 
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; 
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); 
})(); 

// Delay outbound page load in order to record outbound links 
function recordOutboundLink(link, category, action) { 
    try { 
    var myTracker=_gat._getTrackerByName(); 
    _gaq.push(['myTracker._trackEvent', category , action ]); 
    setTimeout('document.location = "' + link.href + '"', 100) 
    }catch(err){} 
} 

回答

1

返回false取消點擊操作,這意味着鏈接將不起作用。另外你調用的第二種方法永遠不會觸發,因爲返回false將退出。

看代碼以不同的方式

function anExample() { 
    _gaq.push(XXX); 
    return false; <-- I cause the function to exit      
    recordOutboundLink(XXXX); <-- I would never be called 
    return false; 
} 

如果要遵循的鏈接,你需要從單擊事件下降了return false

+0

嗯...鏈接工作,它只是在同一個框架中打開。所以這不可能是整個故事。我也會更新我的谷歌分析代碼。 – TLK

+0

好的,現在我正在查看分析代碼,顯然這是打開鏈接在同一個窗口中:'setTimeout('document.location =''+ link.href +'「',100)'我猜我可以將其修改爲在新標籤中打開......或者在'delay()'之後觸發點擊會更好嗎? – TLK

1

Google Analytics on Steroids解決這個相當elegantly

<script type="text/javascript"> 
var _gas = _gas || []; 
_gas.push(['_setAccount', 'UA-YYYYYY-Y']); // REPLACE WITH YOUR GA NUMBER 
_gas.push(['_setDomainName', '.mydomain.com']); // REPLACE WITH YOUR DOMAIN 
_gas.push(['_trackPageview']); 
_gas.push(['_gasTrackOutboundLinks']); 

(function() { 
var ga = document.createElement('script'); 
ga.type = 'text/javascript'; 
ga.async = true; 
ga.src = '//cdnjs.cloudflare.com/ajax/libs/gas/1.10.1/gas.min.js'; 
var s = document.getElementsByTagName('script')[0]; 
s.parentNode.insertBefore(ga, s); 
})(); 
</script>