2011-12-12 4 views
7

이 코드와 내 프로젝트를 특징으로 웹 사이트에 다운로드 버튼 클릭 추적하고 있습니다 :을 분석하여 이벤트와 다운로드 버튼 클릭을 추적

function trackDownload(link) { 
    try { 
     _gaq.push(['_trackEvent', 'Downloads', 'Click', 'Setup executable']); 
     setTimeout('document.location = "' + link.href + '"', 100); 
    } catch (err) {} 
    return false; 
} 

그리고 버튼을 뭔가로 :

<a href="files/setup.exe" onclick="return trackDownload(this);">Download</a> 

사용자가 클릭하면 이벤트가 애널리틱스로 푸시되고 사용자가 파일로 리디렉션됩니다.

이 내용은 외부 링크 추적에도 적용됩니다. 차이는 없습니다.

그리고 지금 내 질문. 사용자가 리디렉션되기 전에 애널리틱스 이벤트가 '처리'되었는지 확인할 수 있습니까? 그렇지 않으면 리디렉션으로 인해 이벤트가 손실됩니까? 현재 이벤트가 추적되고 있지만 그 중 모두가 개임을 확신 할 수 없습니다.

_gaq.push(function() { document.location = link.href; }); 

을하지만이 작동하는지는 분명하지 않다거나 이전에 단지 동등의 경우 :

나는 나는 또한 웹 로그 분석 큐에 재 지정 기능을 밀어 조금 ​​다른 무언가를 시도 할 수 있습니다 읽어 보시기 바랍니다. 사실, here"_gaq.push [...] 호출시 명령이 실행될 때 실행됩니다"입니다.

답변

7

push functions onto the analytics queue에서 정확합니다. '이 시도/캐치 push() ISN 때문에 필요하지 않다고

function trackDownload(link) { 
    _gaq.push(['_trackEvent', 'Downloads', 'Click', 'Setup executable']); 
    _gaq.push(function() { document.location = link.href }); 
    return false; 
} 

참고 : 기능 또는 추적 이벤트가 실행/당신이 배열로에 밀어 순서대로 평가하고 있기 때문에, 당신은이 작업을 수행 할 수 있어야한다 아무것도 던질 수 없다는 문서가 있습니다. 빈 캐치 블록 이후로 제거하는 것이 좋습니다 (mask other problems).

을하지만이 작동하는지는 분명하지 않다거나 이전에 단지 동등의 경우 :

당신은 부탁드립니다. 첫 번째 예 (푸시에서는 setTimeout)에서

이벤트는 (그 시간에, _gaq 그냥 배열이기 때문에) 당신이 리디렉션을 수행 할 때 웹 로그 분석로드가 완료되지 않은 경우 손실됩니다. push(function... 버전에서는 사용자가 다운로드 버튼을 클릭 할 때 애널리틱스가로드를 완료했는지 여부와 관계없이 리디렉션 전에 이벤트가 기록됩니다. 따라서 push(function...을 사용하는 것이 좋습니다.

push(function... 버전은 리디렉션이 발생하기 전에 애널리틱스가로드를 완료 할 때까지 기다리지 만 (어쨌든 원하는 것처럼 들릴 수도 있음), 분석이로드되지 않는 경우를 처리 할 수있는 방법을 추가하는 것이 좋습니다.

+0

내가 게시 한'_gaq'에서 리다이렉션을 푸시 한 다음 'catch'블록과 더 지연된'setTimeout' (1 ~ 2 초)에서 반복 할 수 있을지도 모릅니다. 그래서'_gaq'로 무엇인가 잘못되면 사용자가 조속히 리디렉션 될 것이라는 확신을 가질 수 있습니다. –

+0

지연된 setTimeout이 분석이없는 경우를 처리하는 방법에 동의합니다.그러나, 나는 아마 1 초 또는 2 초가 약간 빠르다고 생각한다. 또한, 방금 catch 블록이 필요하지 않은 것으로 나타났습니다 - 나는 내 대답을 업데이트 할 것입니다. –

+0

사실, 왜'try..catch' 블록을 넣었는지 기억이 안납니다 :) timeout에 대해서 : 나는 클릭 할 때 더 긴 것을 (5 초) 설정하고 스피너를 설정할 수 있습니다. 그래서 빠른 사용자는 아무 일도 일어나지 않는다는 느낌을 가지지 않을 것입니다 ... –

관련 문제