2010-11-25 1 views
1

외부 사이트에 대한 링크를 클릭하는 사용자를 추적하고 싶습니다. 비동기 버전의 GA를 사용하게되어 기쁩니다. 대부분의 브라우저에서 스크립트 태그에서 정지하고 google-analytics.com/ga.js가 다운로드 및 실행되기를 기다리는 대신 페이지가 계속로드됩니다.Google Analytics (비동기 버전)를 사용하여 나가는 클릭을 추적하지 않고 추적하십시오. target = _blank

구글 recommends이 기능이 솔루션

<script type="text/javascript"> 
function recordOutboundLink(link, category, action) { 
    try { 
    var myTracker=_gat._getTrackerByName(); 
    _gaq.push(['myTracker._trackEvent', ' + category + ', ' + action + ']); 
    setTimeout('document.location = "' + link.href + '"', 100) 
    }catch(err){} 
} 
</script> 

<a href="http://www.example.com" onClick="recordOutboundLink(this, 'Outbound Links', 'example.com');return false;"> 

문제점 :

  • 추적 할 수 그것은이 이벤트에 대한이 300ms를 취할 수, 10ms의이 걸릴 수 있지만,이 변경됩니다 무슨 일이 있어도 100ms 후 페이지. 추적이 너무 느리면 페이지가 추적되기 전에 변경됩니다.
  • document.location =은 원래 링크가 무시된다는 것을 의미하므로 target = _blank는 새 탭/창을 열지 않습니다.
+0

참조 : http://stackoverflow.com/questions/10260818/google-analytics-record-outbound-links-open-new-window/12317986#12317986 – Jeff

답변

1

가능한 해결책 :

  • 통화 중 대기 (do {curDate=new Date();} while(curDate-date<millis))이 100ms에 대한 추적이 꺼져 다음 사실 반환 그것의 요청을 보낼 수있는 기회를 갖는다. Busy Waiting은 모든 CPU를 사용할 수 있기 때문에 좋지 않습니다.
  • 내 현재 좋아하는 날 리드를 사용하여 새 탭/창을 열 수 있습니다 그래서 window.open : _gaq에 추적 명령을 누른 후 바로 return true 다음 $(this).attr("target", "_blank"); 등을 사용하는 클릭 핸들러에서

  • .

새 탭을 열면 현재 추적 호출을 종료하기 때문에 작동합니다.

$(document).ready(function(){ 
    var localserver = document.location.hostname; 
    // unfortunately misses if any uppercase used in link scheme 
    $("a[href^=http://],a[href^=https://]") 
    .not("a[href^=http://"+localserver+"]") 
    .not("a[href^=http://www."+localserver+"]") 
    .click(function(e){ 
     $(this).attr("target", "_blank"); 
     _gaq.push(['_trackEvent', 
        'Outgoing Click', 
        $(this).attr("href"), 
        $(this).text() 
       ]); 
     return true; 
    }); 
}); 

외부 링크를위한 새 탭을 항상 열어 놓는 단점이 있기 때문에 다른 문제는 볼 수 없습니다.

관련 문제