2012-11-16 2 views
8

가능합니다 내가 가진 구글의 코드에서 _gaq.push 방법에 대한 호출을 트리거 내 사이트에 대한 몇 가지 Google 웹 로그 분석 추적 코드 (GATC). GA를 사용할 수없는 시나리오에서 확인하고

, 또는 _gaq 내가 페이지에 자바 스크립트 오류가없는 것을 확인하려면,로드되지 않았습니다. _gaq이 '정의되지 않음'과 동일하지 않은지 확인하여 사용할 수 있는지 그리고이 x-browser인지 확인하는 데 충분합니까? Google의 설명서를 살펴 보았지만 이에 대해서는 언급하지 않았습니다.

나는 개체가 null 경우 체크 알고 있어요,하지만 난이 필요한 경우 확실하지 않다. 코드에서이 라인을 유지하는 경우

var _gaq = _gaq || []; 

그래서, 배열은 항상 사용할 수 있어야합니다 : 당신이 분석에서 얻을 권장 자바 스크립트 코드에서

if (typeof(_gaq) !== 'undefined') { 
    _gaq.push(['_trackEvent', 'Downloaded Video', 'Yes']); 
    _gaq.push(['rollup._trackEvent', 'Downloaded Video', 'Yes']);          
} 

답변

18

, 그것은 다음과 같은 행이 포함되어 있습니다. 분석 코드를 나중에 추가하는 경우 기본 스크립트 앞에 위의 행을 추가하기 만하면 작동합니다. 이 조각은 단지 이전에 정의되지 않은 경우 새 배열로 그것을 정의하기 때문에 당신이 전에 _gaq를 정의하는 경우에도 무해한 것으로

참고.

이 비동기 스크립트를 사용할 수있는 좋은 방법입니다

는, 배열 먼저 로컬로 정의되며, 당신은 당신이 필요할 때마다이 배열에 명령을 푸시 할 수 있습니다. 분석 스크립트가로드되면 필요할 때 해당 명령을 사용할 수 있습니다. 따라서 배열이 정의되지 않았는지 검사 할 필요가 없습니다.

+1

Google에서 제공하는 코드에서이 변수를 사용하므로'_gaq' 변수를 다시 정의하고 싶지 않습니다. 나는 다른 곳에서 push 코드를 호출한다. _gaq를 재정의하는 것은 위험한 것처럼 보입니다. – crmpicco

+3

다시 정의해야한다는 것은 아닙니다. 제 요점은 만약 당신이 이미 문서를 추가 한 것처럼, 더 이상 정의되지 않은 것을 확인할 수는 없다는 것입니다. – David

1

@David으로 말하면, 앞에서 정의한 var _gaq = _gaq || []; 스 니펫이있는 한 괜찮으므로 _gaq이 정의되지 않았는지 확인하지 않아도됩니다.

_gaq이 이전에 정의되지 않은 경우 빈 배열로 정의되는 이유는 push 메서드를 갖기 때문입니다. 이렇게하면 GA 코드가로드되기 전에 분석 코드가 실행될 수 있으며, 사용할 수없는 경우도 있습니다.

GA로드시 _gaqpush 메서드가있는 객체로 다시 정의되며 기존 _gaq 배열의 기존 내용이 실행됩니다.

3

ga.js이로드 될 때 window._gat (Q 대신 T를 사용) 전역 객체를 정의하면 정의되어 있는지 테스트해야합니다 (그러나 비동기 적으로로드됨에 따라 테스트가 지연 될 수 있습니다) .

4

당신은 일반적으로 Google 웹 로그 분석 코드가 당신을 위해이 작업을 수행하기 때문에이 정의되어 있는지 확인 할 필요가 없습니다. 그러나 질문이 제시하는대로 귀하의 stie의 다른 섹션에서 이벤트 추적과 같은 일을하는 경우 스크립트가 비동기 적으로로드되었는지 확인하는 것이 좋습니다.

GA 용 jQuery 플러그인 래퍼를 작성했으며 코드를 확인하기 전에 GA가 실제로 설치되었는지 여부를 확인하고 싶었습니다. 이것은 GA를 설치하지 않았거나 GA를 초기화하기 전에 누군가가 플러그인을 사용하려고 한 경우를 다루기 위해 사용되었습니다.

ga('send', 'event', 'Downloaded Video', 'Yes'); 
+2

이것은 나를위한 정답입니다. 프로덕션 사이트에서 추적 스크립트 (google과 다른 사이트) 만 렌더링하므로 dev/UAT _gaq는 정의되지 않았습니다. 그리고 이것은 완벽하게 작동합니다. 감사합니다. – Jag

+0

ga.js가로드 될 때가 아니라 _gaq가 추적 스 니펫에 의해 생성됩니다. 충분하지 않다. http://stackoverflow.com/a/13450713/307687 대신 –

50

당신이 범용 웹 로그 분석 (analytics.js)를 사용하는 경우,이 스위치 CMS는 로그인하지 않은 방문자 또는 특정 페이지에 대해서만 Google 웹 로그 분석을 추가합니다. 함수에 대한 다음 검사가 작동합니다 :

if (typeof(ga) === 'function') { 
    ga('send', 'event', 'what', 'has', 'happened'); 
} 
+1

을 입력하십시오. 정답으로 표시되어야합니다. 당신의 도움을 주셔서 감사합니다. –

+0

기꺼이 도와 드리겠습니다. – Mike

+1

@ Mr.Hardy 유니버설 애널리틱스를 사용하고 있지 않으므로 정답으로 받아 들일 수 없습니다. – crmpicco

0

당신은 JS 어딘가에 추적 이벤트를 추가 할 수 있지만,이에

_gaq.push(['_trackEvent', 'Downloaded Video', 'Yes']); 

을 :

if (typeof(_gaq) == 'undefined') { 
    console.error("Google Analytics is not installed"); 
} 
관련 문제