数据驱动的互联网营销和运营
宋星的个人博客

Google Analytics代码DIY

  大家好,我是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,强烈声明,本人不是做技术的,完全不懂编程,只是瞎研究了一下。

未经允许不得转载:网站分析在中国——从基础到前沿 » Google Analytics代码DIY
分享到: 更多 (0)

评论 13

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #-49

    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

    Cloudream9年前 (2009-04-13)回复
    • 万分感谢感谢,会即时更正.哈哈,看来技术牛人没有直接忽略此文了.

      tenlywu9年前 (2009-04-13)回复
  2. #-48

    感谢分享,占沙发学习

    家常菜9年前 (2009-04-13)回复
  3. #-47

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

    owen9年前 (2009-04-13)回复
  4. #-46

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

    Sidney Song9年前 (2009-04-13)回复
  5. #-45

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

    Kevin9年前 (2009-04-13)回复
  6. #-44

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

    会律博客9年前 (2009-04-13)回复
  7. #-43

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

    eyeglasses9年前 (2009-04-13)回复
  8. #-42

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

    qq下载9年前 (2009-04-24)回复
  9. #-41

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

    自卸车9年前 (2009-05-03)回复
  10. #-40

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

    ITelekom8年前 (2009-09-22)回复
  11. #-39

    It’s the best time to make some plans for the longer term and it’s time to be happy. I have read this put up and if I may just I desire to recommend you some fascinating issues or tips. Perhaps you can write next articles relating to this article. I desire to read more things approximately it!

    Adult Friend Finder7年前 (2011-02-28)回复