2015-01-29 1 views
0

Похоже, что этот код вызывает проблему с синхронизацией. В какой момент после выполнения этого скрипта будет запущен ga.js? Как мы можем быть уверены, что ga.js выполнил, если он был введен таким образом? (Еще один компонент зависит от него)Сроки ввода document.write javascripts

<script type="text/javascript"> 
       var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www."); 
       document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E")); 
    </script> 
+0

Его следует загружать и исполнять синхронно, используя его непосредственно после команды 'write'. Какая у вас проблема синхронизации? – Bergi

+0

ReferenceError: _gat не определен – Tom

+0

Но только при определенных обстоятельствах. Смягчает перемещение блока сценария вверху страницы, а не снизу. – Tom

ответ

2

Я знаю, это не строго ответить на ваш вопрос о document.write, но это должно решить вашу проблему.

ga.js предназначен для использования асинхронно. Вы должны быть в состоянии сделать что-то вроде этого:

var _gaq = _gaq || []; 
_gaq.push(function(){ 
    // Use _gat here freely 
}); 

Функция толкнул в _gaq будет обработан один раз ga.js загружается.

Также кажется, что вы используете довольно старую версию этого кода. В более новой версии не используется document.write.

(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); 
    })(); 

Если вы решили обновить код отслеживания Google Analytics, я рекомендую вам прыгать прямо на Universal Analytics, который использует другой файл с именем analytics.js вместо этого.