如何动态加载Google Analytics JavaScript?

如何动态加载Google Analytics JavaScript?,javascript,performance,google-analytics,tracking,web-traffic,Javascript,Performance,Google Analytics,Tracking,Web Traffic,如果不使用任何其他JS框架(dojo、jquery等),我如何动态加载Google Analytical的javascript以用于网页跟踪? 动态加载JS的典型方法是执行以下操作: var gaJs = document.createElement("script"); gaJs.type = "text/javascript"; gaJs.src = "http://www.google-analytics.com/ga.js"; document.body.appendChild(gaJs

如果不使用任何其他JS框架(dojo、jquery等),我如何动态加载Google Analytical的javascript以用于网页跟踪?

动态加载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文件,以使\u getTracker\u initData/TrackPageview正常工作

关于如何正确动态加载ga.js的任何想法

更新:似乎有人试图通过以下链接解决此问题。然而,它是用于老顽童代码,而不是谷歌分析

关于如何使用ga.js而不是urchin.js来实现这一点,有什么想法吗


我想服务器端编程会更容易些,但我早就发现了。请注意,它专门将其设置为
html头


另外,请查看“通过Ajax添加Javascript”的第一个链接。

我刚刚把一些东西放在一起,可以做到这一点。。。使用jquery。诀窍是向脚本标记添加一个加载事件,其中包含跟踪代码

var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
var gaScript = document.createElement('script');
var loaded = false;
gaScript.src = gaJsHost + "google-analytics.com/ga.js";

$(gaScript).load(function(){
  loaded = true;
  var pageTracker = _gat._getTracker(Consts.google_analytics_uacct);
  pageTracker._initData();
  pageTracker._trackPageview();
});

document.body.appendChild(gaScript);

// And to make it work in ie7 & 8
gaInterval = setInterval(function() {
  if (!loaded && typeof _gat != 'undefined') {
    $(gaScript).load();
    clearInterval(gaInterval);
  }
},50);

我想解决的问题是。。。这是谷歌允许的。

尝试使用谷歌提供的JavaScript代码,然后根据用户界面框架中的结构有条件地显示该部分代码。您没有说明这是在什么平台上运行的,如果是ASP.NET,您可以将代码放在占位符或用户控件中,然后根据配置文件设置将Visible设置为true或false(如果应该包含脚本)。我在多个站点上使用了这种方法,以防止在预生产环境中包含分析脚本

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() { if(typeof _gat=='function')//已加载 { //innitGA(); //您可能希望上面的行未注释。。 //我想如果_gat对象在那里 //你不会想的。 返回; } var hostname='google analytics.com'; var协议=((“https:==文档.位置.协议)?”https://ssl." : "http://www."); js=document.createElement('script'); js.setAttribute('type','text/javascript'); setAttribute('src',protocol+hostname+'/ga.js'); document.body.appendChild(js); //2种检测ga.js负载的方法 //然而,有些浏览器同时使用这两种浏览器 loaded=false;//因此请使用布尔值 js.onreadystatechange=函数(){ 如果(js.readyState=='loaded') { 如果(!已加载) { innitGA(); } 加载=真; } }; js.onload=函数() { 如果(!已加载) { innitGA(); } 加载=真; }; } 函数innitGA() { //var pageTracker=_gat._getTracker('GA_账户/档案ID'); //页面跟踪器。_initData(); //页面跟踪器。_trackPageview(); 警惕(“哦,我能看plz吗?”); } 只需调用loadGA()。。。在IE6/7/8、FF3、Chrome和Opera上测试


如果我来晚了一点,很抱歉。

你可以从中使用这个片段


var_gaq=[[''u setAccount','UA-XXXXX-X'],[''u trackPageview'];
(函数(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)}(文档,'script');

@voyager-第一个链接展示了如何使用我在帖子中展示的方法来实现这一点,但这种方法不起作用。第二个链接描述了将JS添加到html HEAD属性中,这是不可取的,因为这将阻止html呈现。@Danny-您建议也更改标题什么?您可以将其粘贴到函数中,但请记住_gaq必须是全局的(在窗口对象上),问题是没有jquery
<!-- 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>