loading...

Google Analytics进阶运用之Flash跟踪

作者:sluke 发布时间:August 19, 2009 分类:劳动万岁

google的中文帮助里提供了是用_setVar()的方法,具体请看下面的链接:
http://www.google.com/support/analytics/bin/topic.py?hl=cn&topic=11004

实际上,google还提供了一个更高级的方法,请看下面这个项目:
http://code.google.com/p/gaforflash/

Flash不是我熟悉的领域,所以不敢妄言,大体上,是把提供的源码加到自己的flash里就行了。

下面是google给出的示例:

Flash

Flex

Google Analytics进阶运用之事件跟踪

作者:sluke 发布时间:August 13, 2009 分类:劳动万岁

这里是事件跟踪是指Event Tracking,意思比鼠标事件跟踪广泛,先看看都能统计到什么:
1、Flash内容,比如flash站点和flash动画,甚至flash游戏都可以。
2、嵌入式AJAX
3、网页小饰件
4、文件下载
5、数据或文件的载入时间

这里用到的是_trackEvent()方法,用法如下:

1
_trackEvent(category, action, optional_label, optional_value)

category (必填)
这个是标注想统计项目的分类
action (必填)
这个是分类下的具体行为
label (可选)
可以理解为对action的一个描述,可选
value (可选)
这个是一个整数型的字段,通常用于统计载入时间或是事件的价值

如果部署了时间跟踪,在google analytics的报告里还有一个字段叫做Implicit Count(隐式计数),这个是统计交互行为的,比如点了10次某个按钮,点一次算一次,类似PV,这个值需要根据不同的部署去理解。

用音乐站来说明_trackEvent()的用法:

1
2
3
pageTracker._trackEvent("music", "Play", "日光倾城");
pageTracker._trackEvent("music", "Pause", "日光倾城");
pageTracker._trackEvent("music", "Stop", "日光倾城");

music是category,play是action,日光倾城是label(这里是歌名),放在链接上是这样的:
1
2
3
<a href="#" onClick="pageTracker._trackEvent("music", "Play", "日光倾城");">播放</a>
<a href="#" onClick="pageTracker._trackEvent("music", "Pause", "日光倾城");">暂停</a>
<a href="#" onClick="pageTracker._trackEvent("music", "Stop", "日光倾城");">停止</a>

如果加载在播放器的按钮上,就能统计到用户试听《日光倾城》这首歌时的行为。

如果是统计MP3文件被下载的信息,就是这样写:

1
<a href="#" onClick="pageTracker._trackEvent('Downloads', 'MP3', '日光倾城', downloadTime);">下载</a>

这里加入了value,每次在MP3文件被下载完之后,时间会以秒为单位计入value,在报告里用downloadTime表示,加上Implicit Count,就能计算出平均每次下载时间,同理,可以用于记录flash动画的播放。据我所知吗,JS本身并不能监控到文件是否下载完成,所以要用其他方式将这个参数传过来,注意是第四个参数是整数型。

扩展运用


这里介绍两个js库:
TimeTracker()
http://code.google.com/apis/analytics/samples/time-tracker.js
MouseOverTracker()
http://code.google.com/apis/analytics/samples/mouseover-tracker.js
它们需要额外加载到被统计页面。

TimeTracker()主要有两个特性:
1、记录持续时间
2、生成柱状图
如果不自定义代码,使用TimeTracker()会创建一个叫做“TimeTracker”的分类,记录开始和结束时间,计算时间差并发送给google analytics形成报告,用柱状图显示平均时间等数据。用处非常广泛,比如监听页面平均加载时间、视频加载时间、flash界面加载时间或是嵌入式js脚本加载时间等等。
函数如下:
TimeTracker(opt_buckets_array)
返回一个新的时间跟踪器
_recordStartTime(opt_time)
记录开始时间
_recordEndTime(opt_time)
记录结束时间
_setHistogramBuckets(buckets_array)
定义柱状图刻度,默认是[100, 200, 300, 400, 500, 1000, 1500, 2000, 2500, 5000]
_getTimeDiff()
计算时间差
_track(tracker, opt_event_object_name, opt_event_label)
使用_track()需要保证之前已经记录了开始时间和结束时间
tracker是指google analytics在被统计页面已经实例化的一个跟踪项,比如pageTracker
opt_event_object_name是定义TimeTracker()统计数据出现在报告中的名字,默认是“TimeTracker”
opt_event_label是描述这个TimeTracker()的,为了在报告中更容易找到

google给出的运用示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<html>
<head>
<title>Latency Tracking Demo</title>
</head>
<body>
<script type="text/javascript" src="http://www.google-analytics.com/ga.js"></script>
<script type="text/javascript" src="http://www.example.com/scripts/time-tracker.js"></script>
<script type="text/javascript">
var timeTracker = new TimeTracker();
var pageTracker = _gat._getTracker("UA-1735986-1");
</script>
<input type="button" value="Start Timer" onclick="javascript:timeTracker._recordStartTime();"/>
<input type="button" value="Stop Timer" onclick="javascript:timeTracker._recordEndTime();"/>
<input type="button" value="Track!" onclick="javascript:timeTracker._track(pageTracker, undefined, 'Manual Test');"/>
</body>
</html>

定义柱状图的示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// somewhere at the top of the page
var timeTracker = new TimeTracker();
timeTracker._recordStartTime();
// page load and setup
// now when the page is done loading...
timeTracker._recordEndTime();
// Specify your own histogram "action" values
timeTracker._setHistogramBuckets([10, 20, 50, 100, 500, 1000]);
// assuming pageTracker is called from _gat._getTracker(account)
timeTracker._track(pageTracker);

MouseOverTracker()
用户在一个PV里可能会多次触发onMouseOver()事件,这样统计到的数据水分很多,使用这个库就可以只统计第一次onMouseOver()事件而忽略掉后续的。
函数如下:
MouseOverTracker(tracker)
返回一个新的跟踪器,tracker是可选参数,需要是已经在页面中实例化的跟踪项,比如pageTracker
_trackMouseOver()
这个方法第一次被调用的时候,一个onMouseOver()事件被记录,后续操作不记录

示例:

1
2
3
4
5
// We want to track mouse overs on a video unit that has the element id "myVideoUnit".
// assuming pageTracker is called from _gat._getTracker(account)
var mouseOverTracker = new MouseOverTracker(pageTracker);
document.getElementById("myVideoUnit").onMouseOver = mouseOverTracker._trackMouseOver;

最后,事件跟踪功能对跳出率有一定的影响。在没有部署事件追踪的页面,一个用户进入该页面,进行了一系列点击或其他什么操作(没有刷新或者跳转)然后关闭浏览器离开,会被记录为一次“跳出”,如果这个用户的行为被事件跟踪记录,就不算是一次“跳出”,这时“跳出”的定义是一次没有行为被记录下来的“传统跳出”。

Google Analytics进阶运用之用户行为跟踪

作者:sluke 发布时间:August 12, 2009 分类:劳动万岁

google analytics的默认代码已经提供了很多预置的变量,可以获取到用户的浏览器、系统、分辨率等等数据,通过自定义代码,还能获取到很多其他的数据。下面介绍的进阶方法比较有意思,可以用于统计tab结构或者ajax,这里用到的是_setVar()方法。

假如我有一个常见于音乐网站首页的tab结构,tab标题是国语专辑、英文专辑、日韩专辑,默认显示的国语专辑,通过鼠标点击tab切换,可以显示其他分类的专辑,结构大致如下:

1
2
3
4
5
6
<ul id="albumTab">
<li><a href="#">国语专辑</a></li>
<li><a href="#">英文专辑</a></li>
<li><a href="#">日韩专辑</a></li>
<li><a href="#">其他专辑</a></li>
</ul>

这里页面是不会刷新的,所以默认代码就无法知道用户是否浏览了其他分类的专辑,作为一个网站管理者,一定想知道有多少用户点击了tab切换,只需要做如下修改:
1
2
3
4
5
6
<ul id="albumTab">
<li><a href="#" onClick="pageTracker._setVar('Chinese album');">国语专辑</a></li>
<li><a href="#" onClick="pageTracker._setVar('English album');">英文专辑</a></li>
<li><a href="#" onClick="pageTracker._setVar('jk album);">日韩专辑</a></li>
<li><a href="#" onClick="pageTracker._setVar('other album);">其他专辑</a></li>
</ul>

同样的方式,我们也是用于统计用户点击了什么链接,通常给游客和注册用户显示的菜单是不同的,通过给不同用户组的链接加上统计,就能知道有多少不同类型的用户访问网站,也能知道那些链接是用户最爱点的。

ps:统计tab结构还有更好的方式,下一篇日志说,哈哈

Google Analytics进阶运用之跨域跟踪

作者:sluke 发布时间:August 7, 2009 分类:劳动万岁

从今天开始一个介绍Google Analytics进阶运用的系列日志,其实没有多少技术含量,主要内容来自
http://code.google.com/apis/analytics/docs/index.html

首先,要清楚以下几点:
1、Google Analytics用document.domain定义一个网站的cookies
2、独立的域名意味着独立的访问者和流量数据,也就是说,在只使用Google Analytics默认代码的情况下,即使是访问不同的二级域名,都会被单独计算
3、独立的域名并不一定是不同的内容
4、子目录使用主域名的cookies

ps:本系列的ID都是google文档中的,想使用的话请更换成自己的

只统计一个子目录


假如我有一个网站www.example.com,还有一个网店www.example.com/myStore/,我只想统计网店的访问数据,需要用到_setCookiePath()方法,统计代码这么写:
1
2
3
var pageTracker = _gat._getTracker("UA-12345-1");
pageTracker._setCookiePath("/myStore/");
pageTracker._trackPageview();

这是因为cookie路径设置为您的子目录,而不是根目录www.example.com

统计同域名下连个子目录


假如我有一个网店,还有一个购物车
www.example-commerce-host.com/myStore/
www.example-commerce-host.com/myCart/
想统计他们的访问数据,需要用的_cookieCopyPath()方法,统计代码这么写:
1
2
3
4
var pageTracker = _gat._getTracker("UA-12345-1");
pageTracker._setCookiePath("/myStore/");
pageTracker._cookiePathCopy("/myCart/");
pageTracker._trackPageview();

这样就是设置了一个特殊的cookie,由第一个目录提供,也就是myStore目录,这些cookie数据会被复制到myCart目录cookie中

统计A域名及B域名的一个子目录


这是我认为比较有用的应用方式。
假如我有一个网店,使用的是第三方的购物车,这时候需要设定主次,一般自己的是主,第三方的东西是次。统计代码这么写:
主:www.example-petstore.com
1
2
3
var pageTracker = _gat._getTracker("UA-12345-1");
pageTracker._setAllowLinker(true);
pageTracker._setAllowHash(false);

次:www.example-commerce-host.com/petStoreCart
1
2
3
4
var pageTracker = _gat._getTracker("UA-12345-1");
pageTracker._setDomainName("none");
pageTracker._setAllowLinker(true);
pageTracker._setAllowHash(false);

_setAllowLinker()方法是为了让目标网站读取到post过来的数据和cookie,但是这样还不够,还需要用到_linkByPost()方法,将网店的cookie通过HTTP POST传到购物车,因此,在网店的表单里需要这样修改:
1
onSubmit="pageTracker._linkByPost('www.example-commerce-host.com/petStoreCart/begin.php');"

当然网店的相关链接也要改为这样的:
1
<a href="pageTracker._linkByPost('www.example-commerce-host.com/petStoreCart/legalTerms.php');">购物车</a>

还有js形式的写法,用到_link方法
1
<a href="www.example-commerce-host.com/petStoreCart/legalTerms.php" onclick="pageTracker._link(this.href); return false;">购物车</a>

统计主域名及其二级域名


类似这样的:
www.example-petstore.com
dogs.example-petstore.com
cats.example-petstore.com
统计代码这么写:
1
2
3
var pageTracker = _gat._getTracker("UA-12345-1");
pageTracker._setDomainName(".example-petstore.com");
pageTracker._trackPageview();

用_setDomainName方法设定主域名

统计多域名及二级域名


这是一种混杂的情况,基本上是前两种情况相加,统计代码要这么写:
主:www.example-petstore.com
1
2
3
4
var pageTracker = _gat._getTracker("UA-12345-1");
pageTracker._setDomainName(".example-petstore.com");
pageTracker._setAllowLinker(true);
pageTracker._setAllowHash(false);

如果有表单指向了其他域名,需要用_link()方法和_linkByPost()方法将cookie传到其他域名去,用法上面已经写过了。如果表单指向的是二级域名,就不一定要使用_link()方法和_linkByPost()方法了,因为已经设定了主域名。
次:dogs.example-petstore.com
1
2
3
4
var pageTracker = _gat._getTracker("UA-12345-1");
pageTracker._setDomainName(".example-petstore.com");
pageTracker._setAllowLinker(true);
pageTracker._setAllowHash(false);

同样的,如果有表单指向了其他域名,需要用_link()方法和_linkByPost()方法将cookie传到其他域名去
其他域名:www.my-example-blogsite.com
1
2
3
4
var pageTracker = _gat._getTracker("UA-12345-1");
pageTracker._setDomainName("none");
pageTracker._setAllowLinker(true);
pageTracker._setAllowHash(false);

统计框架(iFrame)


假如想把框架中的www.my-example-iframecontent.com数据传到父一级www.example-parent.com的窗口中去,需要用到_getLinkerURL()方法,用js读取框架,统计代码要这么写:
1
2
var iframe = document.getElementById("myIFrame");
iframe.src = pageTracker._getLinkerUrl("http://www.my-example-iframecontent.com/");

今天先到这里,谢谢收看,欢迎交流 sluke520##yahoo.com.cn

SciTE1.79中文加强版

作者:sluke 发布时间:July 7, 2009 分类:劳动万岁

我在code.google.com新建了一个项目,用来存放自己调整过的scite,姑且叫作scite4chinese

目前是基于SciTE1.79,主要是利用了scite-ru的扩展,所以比较厚颜……
争取将scite打造成最轻便的php编辑器

各目录下存放的东西:
abbrev 存放缩写配置文件
api 存放API文件
doc 存放文档
languages 存放语言配置文件
tools 存放Lua扩展文件

功能及改进(与scite原版比较):
1、加入简体中文翻译
2、增加文件管理,自动列出当前文件所在目录中的文件
3、增加收藏,用于管理最常用文件
4、增加函数列表,可列出当前文件中的函数及参数
5、加强缩写功能,可根据不同文件使用Ctrl+B
6、加入tab转换成空格的功能,快捷键Ctrl+8
7、使用SciTePHPSuit项目加强对PHP的支持,包括自动完成、提示、PHP Doc等等

http://scite4chinese.googlecode.com/files/SciTE.zip

已知bug:
不保存收藏