2012-12-17 2 views
0

onClickleanstartupcircle.com에 JavaScript가 망가 졌을 가능성이 있습니다. 나는 속성으로 태그를 추가 한 모든 아웃 바운드 링크에 javascript로 linktracking을 추가하려고합니다. 내가 무엇을 했든간에 target="_blank"이 작동하지 못하고 이벤트를 트리거하지 않을 수도 있습니다.target = "_ blank"Google Analytics 교차 도메인 자바 스크립트 링크 추적으로 인해 새 페이지가 열리지 않음

다른 하나의 정보 인 target="_blank"은 해당 서버에 google analytics init 코드를 표시하지 않아 준비 및 개발에 잘 작동합니다. 그래서 내 자바 스크립트가 잘못되었다고 생각하는 이유입니다.

더 나은 눈 쌍을 사용할 수 있습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

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;'); 
     }; 
    }); 
}; 

여기 내 Google Analytics 코드입니다.

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가 종료되기 때문에 호출하는 두 번째 메서드는 실행되지 않습니다. 다른 방식

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

음 ... 링크가 작동하고 있습니다. 단지 같은 프레임에서 열리고 있습니다. 이것이 전체적인 이야기가 될 수는 없습니다. 나는 또한 Google Analytics 코드로 업데이트 할 것이다. – 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> 
관련 문제