내가 꽤 표준 흐름을 작동하는 Google 웹 로그 분석 - 억양 플랫폼을 짓고 있어요 :Google 유니버설 애널리틱스 태그를 사용하면 스크립트가로드되는 동안 메소드 호출을 어떻게 할 수 있습니까?
- 사용자 수 및 고유 계정 매개 변수와 JS 스 니펫 (snippet)을 구성합니다.
- 웹 사이트에이 JS 스 니펫을 포함시켜 주 라이브러리를 비동기 적으로로드합니다.
- 라이브러리가로드 된 후 사용자는 데이터를 내 웹 앱에 보내는 메소드라고 부를 수 있습니다.
는 여러 회사가 위의 흐름을 처리하는 방법의 몇 가지 다른 구현을 조사한 후, 나는 구글의 새로운 Universal Analytics tag는 다음과 같은 이유로 가장 우아한 실행이 나타나는 것을 발견 :
이 에 사용자를 허용하는 것 주 라이브러리가 비동기식으로을로드하는 동안 메소드 호출을 수행합니다. 모두 <script type="text/javascript">
태그 내에 있습니다.
이의 예는 직선에있는 Quick Start Code :
<!-- Google Analytics -->
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-XXXX-Y', 'auto');
ga('send', 'pageview');
</script>
<!-- End Google Analytics -->
I 메인 익명 함수는 여전히 아마도 DOM을 조작하고 삽입하는 동안은 사용자가 ga('create' ...)
및 ga('send' ...)
를 호출 할 수 있습니다 방법을 이해하기 위해 노력하고있어/analytics.js
스크립트 다운로드
위의 패턴이 어떻게 작동하는지 아는 사람이 있습니까?
축소 된 코드를 리버스 엔지니어링하려는 시도는 기본 라이브러리가로드 될 때까지 메시지 대기열로 효과적으로 작동하는 빈 ga
개체를 생성하고 있음을 나타냅니다. 그런 다음 라이브러리가로드되면 큐 객체를 구문 분석하고 수행해야 할 작업을 수행합니다 (라이브러리가로드 된 경우 실제로 작업을 수행 할 수 있기 때문에).
모든 코드를 리버스 엔지니어링하기가 약간 까다 롭습니다. 위의 내용이 정확한지 100 % 확신 할 수 없습니다.
나는 라이브러리가로드되기 전에 ga("send" ...)
과 같은 메서드에 의해 호출되는 모든 데이터를 저장하기 위해 window.tempDataWhileLibraryHasntLoaded
개체를 사용하여 비슷한 구현을 만들었습니다. 라이브러리는이 개체를 구문 분석하고 필요한 개체를 처리 한 다음 개체를 null로 만듭니다. 그러나 이것은 Google의 구현처럼 깨끗하지는 않습니다. ,
window.GoogleAnalyticsObject = 'ga';
window.ga = window.ga || function(){
(window.ga.q = window.ga.q || []).push(arguments);
}
window.ga.l = 1 * new Date();
그들은 window.ga
을 만들고 배열로 인수를 밀어 함수에 할당 :
감사의 말, 완벽한 설명! – dbau