2009-05-25 27 views
9

Użyłem "Better Google Analytics JavaScript that doesn’t block page downloading", aby dynamicznie ładować Google Analytics, aby nie blokował HTML/renderowania strony.Google Analytics - blokuje HTML/renderowanie strony

Okazuje się jednak, że moja strona occassionaly HTML zablokuje renderowania na 3.0 (WinXP) komunikat o stanie Firefox stwierdza:

"przesyłania danych z www.google-analytics.com"

Jakieś pomysły na to, jak załadować skrypt JavaScript Google Analytics w taki sposób, aby nie blokował on HTML/stron rozdzierania?

+0

Wykorzystuje atrybut async tagu skryptu. Myślę, że FF 3.0 go nie obsługuje. –

+1

łącze jest zerwane – codebox

+0

Link do artykułu jest uszkodzony. Oto link do ostatniej buforowanej wersji z kwietnia 2014 r. Http://web.archive.org/web/20130402061350/http://lyncd.com/2009/03/better-google-analytics-javascript/ –

Odpowiedz

4

Umieścić kod Google Analytics jako ostatnią rzecz przed tagiem </body>, jak zaleca Google?

+0

Mam i jeśli zauważysz z kodu artykułu lyncd.com, dynamicznie ładuje JS do elementu head. –

+0

OK. Gdy widzisz komunikat "Przesyłanie danych z www.google-analytics.com", czy coś na Twojej stronie zostało faktycznie zablokowane przed renderowaniem, czy też strona wygląda na zamkniętą od tej wiadomości? – chaos

+0

Gdy widzę komunikat, strona ma zauważalny blok podczas renderowania strony. Mam JS, który zamienia niektóre ekrany DIV z "none" na "block", ale ten kod nie występuje, ponieważ strona utknęła w "transferowanych danych z www.google-analytics.com". –

1

Ale na dole (tuż przed </body >) i opóźnić go:

<script type="text/javascript" src="http://www.google-analytics.com/ga.js"></script> 
<script type="text/javascript"> 
    if (typeof(_gat)=='object') 
     setTimeout(function(){ 
      _gat._getTracker("UA-1234567-8")._trackPageview()}, 1500); 
</script> 

Wystarczy popatrzeć na moje wyjaśnienia, dlaczego myślę, że jest to "best way to integrate analytics"

1

The. Atrybut DEFER może zadziałać:

<script DEFER type="text/javascript" src="http://www.google-analytics.com/ga.js"> 

<script DEFER type="text/javascript">... tracker code ...</script> 
7

Można użyć Google Analytics [asynchroniczne ładowanie kodów śledzenia] [1]. Fragment powinien pomóc:

<script type="text/javascript"> 

    var _gaq = _gaq || []; 
    _gaq.push(['_setAccount', 'UA-XXXXX-X']); 
    _gaq.push(['_trackPageview']); 

    (function() { 
     var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; 
     ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') +  '.google-analytics.com/ga.js'; 
     var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); 
    })(); 

</script> 
+7

FYI - ten kod jest nieaktualny. Firma Google opublikowała aktualizację: http://code.google.com/apis/analytics/docs/tracking/asyncTracking.html – Brian

+0

Z datą tego komentarza odpowiedź wygląda podobnie do fragmentu kodu śledzenia Google. –

Powiązane problemy