13

Без использования с использованием любых других JS-фреймворков (dojo, jquery и т. Д.), Как бы динамически загружать javascript Google Analytics для использования на веб-странице для веб-отслеживания?Как динамически загружать JavaScript в Google Analytics?

Типичным целесообразно динамической загрузки JS должен сделать следующее:

var gaJs = document.createElement("script"); 
gaJs.type = "text/javascript"; 
gaJs.src = "http://www.google-analytics.com/ga.js"; 
document.body.appendChild(gaJs); 
var pageTracker = _gat._getTracker("UA-XXXXXXXXX"); 
pageTracker._initData(); 
pageTracker._trackPageview(); 

Но это не работает.

файл ga.js не загружен во времени для _gat._getTracker & _initData/TrackPageview функционировать.

Любые идеи о том, как правильно динамически загружать ga.js.

UPDATE: Похоже, что кто-то попытался решить эту проблему по следующей ссылке. Однако он предназначен для использования со старым кодом Urchin, а не с Google Analytics.

Любые идеи о том, как заставить это работать с ga.js вместо urchin.js?

программирования на стороне

http://20y.hu/20070805/loading-google-analytics-dynamically-on-document-load.html

+0

@ Danny - что бы вы рекомендовали изменить название? – 2009-04-15 23:56:09

ответ

0

сервер будет проще я думаю, но я нашел thissome время назад. Обратите внимание, что он специально устанавливает его на html head.

Также проверьте первое соединение на «Добавление Javascript через Ajax».

+0

@voyager - первая ссылка показывает, как это сделать, используя метод, который я показываю в своем сообщении, что не работает. Вторая ссылка описывает добавление JS в атрибут html HEAD, который является нежелательным, поскольку это будет * block * html render. – 2009-04-15 21:58:48

+0

@voyager - спасибо хотя за попытку ответить :) – 2009-04-15 21:59:18

0

Я буквально просто что-то поставил, что делает это ... используя jquery. Трюк состоит в том, чтобы добавить событие загрузки в тег скрипта с кодом отслеживания в нем.

Вещь, которую я пытаюсь решить, - это разрешено Google.

+0

вопрос говорит * без * jquery – GarethD

1

Попробуйте использовать точный код JavaScript, предоставленный Google, а затем условно отобразите этот раздел кода на основе конструкции в пользовательском интерфейсе. Вы не сказали, на какой платформе это работает, если это ASP.NET, вы можете поместить код в PlaceHolder или UserControl, а затем установить Visible в true или false на основе настройки файла конфигурации, если скрипт должен быть включен. Я использовал этот подход на нескольких сайтах, чтобы предотвратить включение сценария Google Analytics в предпроизводственные среды.

0
 
function loadGA() 
{ 
    if(typeof _gat == 'function') //already loaded 
    { 
     //innitGA(); 
     // you may want the above line uncommented.. 
     // I'm presuming that if the _gat object is there 
     // you wouldn't want to. 
     return; 
    } 
    var hostname = 'google-analytics.com'; 
    var protocol = (("https:" == document.location.protocol) ? "https://ssl." : "http://www."); 
    js = document.createElement('script'); 
    js.setAttribute('type', 'text/javascript'); 
    js.setAttribute('src', protocol+hostname+'/ga.js'); 
    document.body.appendChild(js); 
    //2 methods to detect the load of ga.js 
    //some browsers use both, however 
    loaded = false; // so use a boolean 
    js.onreadystatechange = function() { 
     if (js.readyState == 'loaded') 
     { 
      if(!loaded) 
      { 
       innitGA(); 
      } 
      loaded = true; 
     } 
    }; 
    js.onload = function() 
    { 
     if(!loaded) 
     {   
      innitGA(); 
     } 
     loaded = true; 
    }; 
} 

function innitGA() 
{ 
    //var pageTracker = _gat._getTracker('GA_ACCOUNT/PROFILE_ID'); 
    //pageTracker._initData(); 
    //pageTracker._trackPageview(); 
    alert('oh hai I can watch plz?'); 
} 

просто позвоните loadGA() ... проверено на IE6/7/8, FF3, Chrome и Opera

жаль, если я немного опоздал на вечеринку.

5

Вы можете использовать этот фрагмент с HTML5 Boilerplate.

<!-- Google Analytics: change UA-XXXXX-X to be your site's ID. --> 
<script> 
    var _gaq=[['_setAccount','UA-XXXXX-X'],['_trackPageview']]; 
    (function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0]; 
    g.src=('https:'==location.protocol?'//ssl':'//www')+'.google-analytics.com/ga.js'; 
    s.parentNode.insertBefore(g,s)}(document,'script')); 
</script> 
+1

вы можете вставить это в функцию, но помните, что _gaq должен быть глобальным (на объекте window) – reconbot

Смежные вопросы