Javascript 谷歌分析;跟踪出站点击;怎么用?
我读了这篇关于跟踪横幅上的出站链接的文章,例如: 因此,我将此代码添加到我的href的onClick事件中:Javascript 谷歌分析;跟踪出站点击;怎么用?,javascript,html,google-analytics,Javascript,Html,Google Analytics,我读了这篇关于跟踪横幅上的出站链接的文章,例如: 因此,我将此代码添加到我的href的onClick事件中: javascript: pageTracker._trackPageview('/outbound/top_banners/banner_name'); 这够了吗 因为我读过一些地方,所以在执行任何javascript之前,我需要一个“linkdelay”函数,或者在文档的头中的某个地方 另外,在GA(界面)中,我可以在哪里查看点击 感谢问题出在这里:Google Analytic
javascript: pageTracker._trackPageview('/outbound/top_banners/banner_name');
这够了吗
因为我读过一些地方,所以在执行任何javascript之前,我需要一个“linkdelay”函数,或者在文档的头中的某个地方
另外,在GA(界面)中,我可以在哪里查看点击
感谢问题出在这里:Google Analytics记录和报告的每一项数据都被发送到GA服务器,该服务器位于客户端请求的uu utm.gif的请求URL组件中。函数u.trackPageview()将数据收集/连接到请求URL以及请求本身。换句话说,如果不调用_trackPageview(),则不会向GA服务器发送任何数据
因此,问题是GA请求(如上)是否在与出站链路相关联的请求之前处理。如果不是,那么GA不会记录对出站链接的点击,这不是您想要的
所以你想要的是延迟,只是稍微长一点——足够让GA请求发生,但足够短,让用户不会注意到延迟——出站链接请求
在你的Q中发布的代码和下面的代码之间有一些区别——所有的差异都指向这个“竞争条件”
首先,请注意,onClick处理程序的返回值设置为“false”——防止客户端浏览器(立即)导航到
第二个差异是对setTimeout的调用。传入的第三个参数“100”是延迟毫秒数
第三,onclick处理程序(fnx)创建自己的跟踪对象,因此不依赖已在别处初始化的页面跟踪器对象
您的第二个问题是,您在GA浏览器中的何处查看这些单击?使用GA,您可以通过两种不同的方式跟踪事件——使用_trackEvent()或_trackPageView()
通过第二种方式跟踪出站链接(“点击”显示的不是事件,而是页面视图(“虚拟页面视图”是GA顾问等最常使用的术语,表示作为页面视图跟踪的内容,但实际上不是)。因此,您将看到这些点击与其他页面视图一起报告,即在内容中(以及左侧面板中的三个主要标题“流量和访问者”)。您如何判断该报告中的哪些行引用了这些出站单击?页面字段的值(通常是最左边的列标题)将是出站链接的url。当然,一旦您知道了这一点,您就可以创建一个高级段或自定义报告,甚至创建一个新的概要文件,以单独报告这些内容
<script type="text/javascript">
function fnx(that) {
try {
var pageTracker=_gat._getTracker("UA-YOURACCOUNTHERE-PROFILE");
pageTracker._trackPageview("http://www.outbound_link.com");
setTimeout('document.location = "' + that.href + '"', 100)
}catch(err){}
}
</script>
<a href="www.outbound_link.com" onclick='fnx(this);return false;'>"Take Me Here"</a>
函数fnx(即){
试一试{
var pageTracker=_gat._getTracker(“UA-YOURACCOUNTHERE-PROFILE”);
页面跟踪器._trackPageview(“http://www.outbound_link.com");
setTimeout('document.location=“”+that.href+'”,100)
}捕获(错误){}
}
这是我的100%工作解决方案,用于跟踪所有出站链接(我喜欢jQuery,所以您需要将jQuery.js脚本添加到页面)
此脚本提供指向GA like:/outing/http/www.example.com的所有出站链接。
为了获得更好的体验,您需要为此链接创建高级段。使用参数创建它:“页面”以“/outgoing/http”开头。
这就是全部!现在您有了出站链接的完整统计信息。此解决方案将允许您单击带有target=''blank'
的链接,此外,还允许您在任何链接上设置数据属性,并让这些属性自动发送到GA
$('a').bind('click', function( event ) {
var target = $(this).attr('href');
if ($(this).attr("data-event-category") !== undefined && $(this).attr("data-event-label") !== undefined) {
gtag('event', 'click', {
'event_category': $(this).attr("data-event-category"),
'event_label': $(this).attr("data-event-label"),
'event_callback': function(){handle_redirect($(this), event);}
});
} else {
handle_redirect($(this), event);
}
});
function handle_redirect(element, event) {
var target = element.attr('href');
var regExp = new RegExp("//" + location.host + "($|/)");
var isLocal = (target.substring(0,4) === "http") ? regExp.test(target) : true;
var url = target;
if(isLocal===true) {
return;
} else {
event.preventDefault();
gtag('event', 'click', {
'event_category': 'outbound',
'event_label': window.location.href + ' --> ' + url,
'transport_type': 'beacon',
'event_callback': function(){element.unbind( "click"); element[0].click();}
});
}
}
谢谢道格的好回答。所以我实际上不需要事件跟踪?如果我理解正确,有两种跟踪方式,一种是你的例子,另一种是“事件”。对吗?没错——这两种方式通常在博客文章中被称为“事件跟踪”和“虚拟页面浏览”。现在编辑我的问题以强调这一点。不过,还有一个问题:如果我设置了一个“高级段”,其中只包含我需要的页面浏览量(出站点击),那么这些页面浏览量是否会从页面浏览总量中减去?也就是说,如果“www.link.com”有1000个页面浏览量,并且在我设置段之前总共有10000个Pviews,那么在我创建的段中会有1000个页面浏览量,在“所有访问”中仍然有10000个页面浏览量吗?我的问题是,我想,我怎样才能把这些完全分开,这样数据就不会混在一起?不,这些页面浏览量不会被减去。清理页面浏览帐户的一种方法是“标记”这些页面浏览,以便在配置文件级别轻松过滤。函数的_trackPageview()只接受一个参数(默认值等于请求URL,但您可以通过传入任何字符串(例如“CV”)来选择不使用默认值,这只是一些特殊的名称,可以简化过滤。
$('a').bind('click', function( event ) {
var target = $(this).attr('href');
if ($(this).attr("data-event-category") !== undefined && $(this).attr("data-event-label") !== undefined) {
gtag('event', 'click', {
'event_category': $(this).attr("data-event-category"),
'event_label': $(this).attr("data-event-label"),
'event_callback': function(){handle_redirect($(this), event);}
});
} else {
handle_redirect($(this), event);
}
});
function handle_redirect(element, event) {
var target = element.attr('href');
var regExp = new RegExp("//" + location.host + "($|/)");
var isLocal = (target.substring(0,4) === "http") ? regExp.test(target) : true;
var url = target;
if(isLocal===true) {
return;
} else {
event.preventDefault();
gtag('event', 'click', {
'event_category': 'outbound',
'event_label': window.location.href + ' --> ' + url,
'transport_type': 'beacon',
'event_callback': function(){element.unbind( "click"); element[0].click();}
});
}
}