2012-02-16 5 views
6

Google 웹 로그 분석을 사용 중이며 애널리틱스 요청이 완료된 후 리디렉션을하고 있습니다.Google 애널리틱스 이후에 자바 스크립트 실행

var _gaq = _gaq || []; 

_gaq.push(['_setAccount', 'UA-12345678-1']); 

_gaq.push(['_trackPageview']); 

_gaq.push(function() { 
    window.location.replace("myRedirectToUri"); 
}); 

이가 제대로 실행되지 않습니다 :

이 코드를 사용하고 있습니다.

파이어 폭스에서는 리디렉션이 제대로 수행되지만 (IE, Chrome, Safari) 다른 브라우저에서는 리디렉션이 제대로 이루어 지므로 분석 데이터가 손실됩니다.

현재 1 초의 시간 제한을 설정했지만 실제 해결책은 아닙니다.

올바르게 구현하는 방법에 대한 도움이 필요하십니까?

+0

는'window.location.href = url' 대신'윈도우를 사용하는 것을 시도했다 http://stackoverflow.com/questions/8147065/google-analytics-async-events-tracking-callback –

+0

참조하십시오. location.replace (url)'? – Eduardo

+0

window.location.href = url :( – Amir

답변

11

지금이 문제에 대한 좋은 해결책은 없습니다. 가장 좋은 방법은 시간 초과를 추가하여 리디렉션을 지연시키는 것입니다. 현재 _trackPageview에 대한 콜백이 없습니다. 반환하면 추적이 시작되었음을 의미하지만 __utm.gif 요청이 완료 될 때까지 페이지 뷰를 성공적으로 등록했음을 보장하지는 않습니다.

1 초 제한 시간이 너무 길 수 있습니다. 나는 보통 200-400ms 정도의 타임 아웃을 유지한다.

var _gaq = _gaq || []; 

_gaq.push(['_setAccount', 'UA-XXXXXXX-X']); 

_gaq.push(['_trackPageview']); 

_gaq.push(function() { 
    setTimeout(function(){ 
     window.location.href = newUrl; 
    }, 200); 
}); 

편집 : 나는 원래 처음이 답변을 게시하고 그 이후 Google 웹 로그 분석은 먼 길을왔다 이후 2 년이되었습니다

. 당신이 analytics.js를 사용하는 범용 웹 로그 분석으로 마이그레이션 한 경우에 해당 될 것입니다

var _gaq = _gaq || []; 

_gaq.push(['_setAccount', 'UA-XXXXXXX-X']); 

_gaq.push(['_set','hitCallback',function(){ 
    window.location.href = newUrl; 
}]); 

_gaq.push(['_trackPageview']); 

그리고 :

지금이 작업을 수행 할 수있는 적절한 방법이

ga('create', 'UA-XXXXXXX-X') 

ga('send', 'pageview', { 
    'hitCallback': function() { 
    window.location.href = newUrl; 
    } 
}); 

편집 2

Google 애널리틱스 코드가 차단되거나 변경된 경우에도 코드가 실행되도록하기위한보다 적절한 방법입니다. 확장 또는 adBlocker에 의해.

var t = undefined; 

var myCode = function(){ 
    window.clearTimeout(t); 
    t = undefined; 
    window.location.href = newUrl; 

}; 

t = setTimeout(myCode, 3000); 

ga('create', 'UA-XXXXXXX-X') 

ga('send', 'pageview', { 
    'hitCallback': myCode 
}); 
+1

와 동일한 동작 AdBlock 또는 Ghostery를 사용하는 사용자는 AdBlock 또는 Ghostery를 사용하면 작동하지 않으므로 AdBlock 사용자의 위치 변경을 실행하려면 setTimeout을 GA 배열로 밀어 넣지 않고 사용하십시오 함수에서. – DanFromGermany