Google Analytics:为链接点击设定事件追踪的方法
在 Google Analytics 中,可以使用 Event Tracking 功能跟踪自定义的事件。但是,如果你要跟踪的是一个链接点击,那么单纯这样写则很有可能导致漏掉许多事件:
<a href="http://www.example.com" onclick="_trackEvent('link', 'click', this.href)">Visit example.com</a>
这是因为,每次自定义事件被触发的时候,浏览器都会向 Google 的服务器发送一个请求,从而发送数据。但是点击链接会直接进入下一个页面,如果此时需要发送的请求还没有完成,浏览器就会放弃该请求而直接跳转。所以,就会导致事件无法被记录。
解决方法
经典跟踪代码 (ga.js) 的解决方法
既然事件没有记录是因为跳转得太快,那么我们可以通过setTimeout函数设定一个比较小的延时来给浏览器充足的时间向 Google 的服务器发送数据。一般设为 500ms 或 1000ms 就足够了,同时用户也不会察觉到。
我们可以把触发事件的语句包装到一个自定义函数中:
var trackOutboundLink = function(url) {
_trackEvent('link', 'click', url);
setTimeout("document.location='" + url + "'", 500);
}
同时在 HTML 中这么写:
<a href="http://www.example.com" onclick="trackOutboundLink(this.href);return false;">Visit example.com</a>
其中return false语句防止了默认行为(点击a而跳转)的发生,实际跳转由我们自己来完成。
Universal Analytics (analytics.js) 的解决方法
Google 建议的方法
如果你已经升级到了 Universal Analytics,那么 Google 给出了这种情况下的官方建议。在新版的跟踪代码中,设置事件的函数包含了一个 callback,在成功设置完毕后触发。于是我们可以把手工跳转的代码写到 callback 函数中,这样就不用显式地设置 timeout 了,同时浏览器也能够「尽快」跳转。
同样声明一个包装函数:
var trackOutboundLink = function(url) {
ga('send', 'event', 'outbound', 'click', url, {'hitCallback':
function () {
document.location = url;
}
});
}
这次,使用了hitCallback,它所对应的函数将在成功发送事件信息后被调用。类似,HTML 代码中这么写:
<a href="http://www.example.com" onclick="trackOutboundLink('http://www.example.com'); return false;">Check out example.com
(以上两段示例代码来自 Google 官方文档,链接见上文)
还可以做得更好
本来教程到这里就可以结束了,可是还有一点值得说明。上述解决方法在绝大多数情况下是完全没有问题的,但是除了一种情况:浏览器无法正常发送事件数据到 Google 服务器。例如,如果 Google 的服务器忽然「无法访问」(你懂的),或者加载analytics.js失败,那么hitCallback就将永远不会被调用。这种情况下这个链接就变成点了也没用的了。
在访问 Google 完全没有问题的情况下,这种情形自然不必考虑。不过为了提供最大程度的保障,可以人工加一个防御措施:
var trackOutboundLink = function(url) {
var redirectTriggered = false;
ga('send', 'event', 'outbound', 'click', url, {'hitCallback':
function() {
redirectTriggered = true;
document.location = url;
}
});
setTimeout(function() {
if (!redirectTriggered) {
document.location = url;
}
}, 1500);
}
即,在进入trackOutboundLink之后,设置 1500ms 的过期时间,如果时间到了还没有跳转,就人工跳转,保证访客可以正常访问。
原文地址:http://www.renfei.org/blog/google-analytics-event-tracking-for-links.html
Google Analytics:为链接点击设定事件追踪的方法的更多相关文章
- Google Analytics 统计用户点击和每个页面浏览的用户id
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-805xxx-10"></sc ...
- 如何使用DTM将App事件发送到Google Analytics
本文分享于华为开发者论坛<如何使用DTM将App事件发送到Google Analytics>,可观看视频具体集成指导. 作为一名开发者或App运营人员,实时获取用户在App中的行为数据是日 ...
- Google Analytics谷歌分析事件之非互动事件
非互动事件官方的解释如下 “非互动”一词是指可选的布尔值参数,此参数可以传递到用于发送事件命中的方法.通过此参数,您可以确定要如何为网站上包含事件衡量的网页定义跳出率.例如,假设您的首页上内嵌有一个视 ...
- jquery 触发a链接点击事件
jquery 触发a链接点击事件 <p class="btnSubmit"><a href="javascript:submitData();" ...
- 使用 Google Analytics 跟踪 JavaScript 错误
Google Analytics(谷歌分析)不仅仅是一个流量统计工具,你还可以用它来测量广告活动的有效性,跟踪用户多远到所需的页面流(从点击广告到购物车到结账页面)获取,并基于用户的信息设置浏览器和语 ...
- vue-cli的工程如何正确使用Google Analytics?
前言 最方便的方法,莫过于使用vue-analytics:https://github.com/MatteoGabriele/vue-analytics. 包是有了,可是真正使用起来会发现Google ...
- Google Analytics 学习笔记三 —— GA常用术语
一.Sessions 1.会话,指定的时间段内在网站上发生的一系列互动,例如一次会话可以是网页浏览.事件或电子商务等.参考Google Analytics(分析)如何定义网络会话 2.会话结束的方式分 ...
- 如何使用Google Analytics Universal Analytics增强型电子商务
Google Analytics: Universal Analytics增强型电子商务,可以让运营人员轻松地跟踪用户在其购物历程中与产品的互动,包括产品展示.产品点击.查看产品详情.将产品添加到购物 ...
- 【转载】国内网站博客数据统计选免费Google Analytics还是百度统计
[转载]国内网站博客数据统计选免费Google Analytics还是百度统计 Google Analytics谷歌统计是我用的第一个网站统计工具,当然现在也一直在用.Google Analytics ...
随机推荐
- TCP 的那些事儿(转载)
无论是PC客户端开发还是移动开发,或是Web开发, 网络编程都是很重要的一块, 深入理解TCP/IP和HTTP协议是一个优秀程序员的必备技能.看到酷壳老大正好写了篇相关文章, 正好拿来学习, 转自 h ...
- Android比较字符串是否为空(isEmpty)
StringUtils.java: package com.yx.equipment_collection.utils; import android.annotation.SuppressLint; ...
- PHP上传文件出现文件名被截掉第一个字符的问题
最近用PHP做了一个简单的上传功能,结果出现了一个意想不到的问题.我上传的文件,在获取$_FILES的时候发现文件名的第一个字符被截掉了,因为最开始上传的一直是数字或者字母为名称的文档,也没有太在意这 ...
- google开源的C++性能分析工具 - gperftools
gperftools是Google提供的一套工具,其中的一个功能是CPU profiler,用于分析程序性能,找到程序的性能瓶颈. 安装 gperftools:http://code.google.c ...
- HDU-2571命运
Problem Description 穿过幽谷意味着离大魔王lemon已经无限接近了!可谁能想到,yifenfei在斩杀了一些虾兵蟹将后,却再次面临命运大迷宫的考验,这是魔王lemon设下的又一个机 ...
- UVA 195 Anagram
题意:求输入字符串的所有组合,按字典序输出! 解法:使用枚举(枚举前先找出最字符串的最小字典序)枚举时加上枚举生成条件! #include <iostream> #include < ...
- sicily 4379 bicoloring
题意:输入一个简单(无多重边和自环)的连通无向图,判断该图是否能用黑白两种颜色对顶点染色,使得每条边的两个端点为不同颜色. 解法:由于无自连通节点存在,所以只需进行一次宽搜,遍历所有的点和所有的边,判 ...
- Spring MVC中各个filter的用法
转载:http://blog.csdn.net/qyp1314/article/details/42023725 Spring MVC中各个filter的用法 2014-12-19 09:08 105 ...
- memcached学习——大纲简介 && 安装(基于centos6.5)、启动、关闭memcached(一)
大纲简介 安装前,先简单介绍一下memcached. memcached是一个免费.开源.高性能的分布式缓存.设计memcached的初衷是为了加快web应用程序,减少DB负载. 安装要求:支持大多数 ...
- Java使用poi包读取Excel文档
项目需要解析Excel文档获取数据,就在网上找了一些资料,结合自己这次使用,写下心得: 1.maven项目需加入如下依赖: <dependency> <groupId>org. ...