2010-03-04 5 views
9

비동기 Google 웹 로그 분석을 사용하기 위해 사이트를 전환 중이며 _gaq 배열로 이벤트를 푸시하는 방법에 대해 궁금합니다. 거의 알 수 있듯이 ga.js 스크립트가 비동기식으로 다운로드되는 동안 이벤트는 대기중인 패턴으로 _gaq에 배치됩니다. 스크립트가 다운로드되면 실행되고 문서 후로드 이벤트는 어떻게 추적됩니까?비동기 Google 웹 로그 분석은 언제 어떻게 실행됩니까?

페이지로드 후 10 초가 지나면 사용자가 링크를 클릭하는 예가 있습니다. 설명서에 따르면 이벤트는 _gaq에 있어야합니다. 분석 스크립트는 어떻게 이것을 감지합니까?

답변

8

일반 부분은 가장 Google Analytics Async doc하여 설명한다.

API 호출을 대기열에 푸시하려면 기존 JavaScript 구문을 명령 배열로 변환해야합니다. 명령 배열은 특정 형식을 따르는 JavaScript 배열입니다. 명령 배열의 첫 번째 요소는 호출하려는 추적기 개체 메서드의 이름입니다. 문자열이어야합니다. 나머지 요소는 추적기 개체 메서드에 전달할 인수입니다. JavaScript 값이 될 수 있습니다.

나는 육즙 세부 ​​사항을 설명하려고합니다

: _gaq 그냥 일반 자바 스크립트 배열, 모든 배열은 배열의 마지막에 항목을 추가 할 수있는 푸시 방법이있다. 따라서 Analytics 스크립트가로드되기 전에 모든 명령이 배열로 푸시됩니다. Analytics 스크립트의 끝에서 _gaq.push 메서드를 사용자 지정 메서드로 바꿔 _gaq 배열의 모든 항목을 실행합니다. 새로운 _gaq.push 메서드는 추적 메서드를 즉시 실행합니다. 따라서 페이지로드 후 10 초 후에 푸시 메소드를 실행하면 명령이 실행되어야합니다.

+2

저는 _gaq에서 로깅을했는데 스크립트가로드되기 전에 그냥 간단한 배열 일뿐입니다. 스크립트가 풀리면 _gaq가 기존 분석 객체로 변환되어 사용자가 말하는 것을 확인합니다. –

0

구글 분석 코드의 난독 화는 항상 어렵지만이 문제를 해결하려면 스크립트를로드 할 때 백 로그 대기열 (_gaq)의 모든 것을 처리 한 후 배열에 push 함수를 재정의합니다. 이렇게하면 재정의 된 push 함수는 pageTracker 개체의 실제 함수 호출에 대한 프록시 역할을합니다.

여기 Array 객체의 메소드를 재정의 push의 간단한 예이다 :

var foo = []; 
foo.push("one");      // pushes "one" onto the array 
foo.push("two");      // pushes "two" onto the array 
foo.push = function(a) { alert(a) }; // redefines `push` 
foo.push("three");     // alerts "three" 
alert(foo);       // alerts "one,two" 
관련 문제