Home » 监测工具

Google Analytics代码DIY

12 四月 2009 12 Comments

  大家好,我是Tenly,平时比较少发文章,主要是原博客后台版本过旧,发文章不顺心。今天在宋星的允许下帮他更新了wordpress,并装了些插件,样貌大换新,一切令人兴奋。

  这篇博客就讲点简单的技术问题吧,技术专家(如车东这样的人)可以直接忽略此文。感谢一楼评论的建议与更正。
以下GA代表Google Analytics。

<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>

<script type="text/javascript">
try { var pageTracker = _gat._getTracker("UA-4130899-1");
pageTracker._trackPageview(); }
catch(err) {}
</script>

  上面是最基本的GA代码,分为两个部分。

第一部分(加粗部分):

  1. 通过一条(正则表达式)JavaScript三元运算符,定义了gaJsHost 变量。我们不需要非常了解正则表达式的原理,但看得出来这一行是在让GA自动辨认代码所在页面的URL地址是哪种前缀,如https等等,了解即可。
  2. 通过最常用的(JS内置函数)DOM对象函数 document.write,把一串html代码写入到所在页面。(unescape 函数的用途就不细说了。)这串html代码的目的是让页面去GA的服务器下载一个叫ga.js的统计功能文件,用来进行实现GA的统计。上面的gaJsHost 变量,决定了ga.js文件的URL地址的细微不同。

  第一部分的代码就实现了两个目的。但是我们可以看出有很多可以DIY的地方:

  1. ga.js文件可以放在本地,如把ga.js放在http://www.chinawebanalytics.cn/ga.js。那么第一部分的代码可简化为:

    <script src="ga.js" type="text/javascript"> </script>
    或者是
    <script src="http://www.chinawebanalytics.cn/ga.js" type="text/javascript"></script>

    举这个例子主要是为了解析代码作用。

    实现上这样做的唯一好处是能让ga.js的加载速度=本站速度。随着GA的连接速度越来越好,这种作法也大可不必了。另外,ga.js会不定期被GA不通知的情况更新,所以如果下载了ga.js,也许没过多久就不是最新版本了。

  2. 简化GA的监测代码。如果你的网站很清楚就是http://开头的,而不是https://开头。那么第一部分可以直接这样写,四行变一行:(PS.我有电脑洁癖症)。后方有Cloudream同学的更精简方法。

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

第二部分(未加粗部分):

  1. try catch语句的作用是,在与GA服务器通信的过程中,防止意外错误造成页面停止Loading。
  2. 定义 pageTracker 实例对象,并根据你的帐户ID关联上。pageTracker 类下面有很多函数,希望以后的文章里与讲几个函数的作用。
  3. pageTracker._trackPageview() 函数是指记录一个PV,并把该页面的地址返回给GA服务器。

  第二部分的代码就实现了两个目的,关联你的帐户ID,并记录页面的PV与相应的URL地址。同样,这里的DIY更是无穷无尽了:

  1. 定义第一次打开该页面,才记作一次PV,如果不是,则不记。通过判断window.name是否为空值,来确定这个页面窗口在浏览器中是否第一次打开。结合地写一些其它相辅助的代码,可以实现对垃圾流量的过滤。

    try {
    var pageTracker = _gat._getTracker("UA-4130899-1");
    if(!window.name){
    pageTracker._trackPageview();}

    } catch(err) {}

  2. 一个PV两处记。你可以建立与两个ID的联系,让访问数据同时记入两个ID的统计数据库。

    <script type="text/javascript">
    try {
    var pageTracker = _gat._getTracker("UA-4130899-1");
    var pageTracker1 = _gat._getTracker("UA-8888888-1");
    pageTracker._trackPageview();
    pageTracker1._trackPageview();}
    catch(err) {}
    </script>

  抛砖引玉的内容就到此了,今晚要早睡,明天还要上班了。欢迎“流”言。PS,强烈声明,本人不是做技术的,完全不懂编程,只是瞎研究了一下。

12 Comments »

  • Cloudream said:

    1. a = xx ? yy : zz; 并不是正则表达式,而是JavaScript三元运算符,用于简化 if (xx) {a=yy} else {a=zz},也可以没有a=,直接执行分支语句。

    2.document.write 不是JS内置函数,而是浏览器DOM对象函数。

    3.简化代码的话,type=”text/javascript”可以不写,浏览器都默认script元素为js语言。

    4.声明pageTracker实例对象,JS没有“类”的概念。JS开发中更多用原型对象的概念。

    5.if(window.name == “”) 可简写为 if(!window.name )

    6.if后只有一句的话,可以删掉{} 写成 if(!window.name ) pageTracker._trackPageview(); 不过不建议这么做。

    :P

    回复(Reply)

    tenlywu reply on 四月 13th, 2009 9:57 上午:

    万分感谢感谢,会即时更正.哈哈,看来技术牛人没有直接忽略此文了.

    回复(Reply)

  • 家常菜 said:

    感谢分享,占沙发学习

    回复(Reply)

  • owen said:

    不错的分享,还有一楼的同学,呵呵

    回复(Reply)

  • Sidney Song said:

    本博客的第一篇技术解决方案的文章。顶一个先!
    Tenly的加入弥补了这个博客技术性内容相对薄弱的问题,希望多多出类似好文!
    另,关于这个领域,建议你能做一个内部交流分享。

    回复(Reply)

  • Kevin said:

    潜水好久了,露个头儿~
    关注您的博客很长时间了,学到了不少东西,谢谢~

    回复(Reply)

  • 会律博客 said:

    感谢分享,之前从来就没怀疑过自己会去改,看来这是机会!

    回复(Reply)

  • eyeglasses said:

    分析网站总算知道一点眉目了,谢谢分享你的技术成果。

    回复(Reply)

  • qq下载 said:

    原来是这些个意思 总算知道了一点
    以前只知道放 不知道原来还可以自己去修改 谢谢老大分享

    回复(Reply)

  • 自卸车 said:

    var pageTracker = _gat._getTracker(“UA-4130899-1″);
    请问以上UA-后面的ID在哪儿找啊?

    回复(Reply)

  • ITelekom said:

    Возьму на свойстрах и риск)))

    回复(Reply)

  • MySEM-关注搜索引擎营销 » Google analytics代码解读 said:

    [...] 我们这些做营销的基本都是文科的,对于代码方面的理解本身就不够,但是在有些时候还是必须要学一些代码,今天看到网站分析的analyticsDIY的文章,特转来分享。 这是google analytics的跟踪代码: <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> <script type=”text/javascript”> try { var pageTracker = _gat._getTracker(”UA-8459969-1″); pageTracker._trackPageview(); } catch(err) {}</script> [...]

Leave your response!

Add your comment below, or trackback from your own site. You can also subscribe to these comments via RSS.

Be nice. Keep it clean. Stay on topic. No spam.

You can use these tags:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <font color="" face="" size=""> <span style="">

This is a Gravatar-enabled weblog. To get your own globally-recognized-avatar, please register at Gravatar.

Get Adobe Flash playerPlugin by wpburn.com wordpress themes

备案/许可证编号为: 京ICP备09063066号