谷歌分析:使用多个未知跟踪器
Google Analytics: Use multiple unknown trackers
我正在一个被多个帐户跟踪的网站上使用谷歌分析。由于某些跟踪器是作为Web服务器响应的一部分动态添加的,因此我无法轻松知道哪个页面被哪些帐户跟踪。即我没有跟踪器的名称。
我想找到一种简单的方法将事件发送到所有跟踪器,而无需知道哪些跟踪器当前在特定页面上处于活动状态。
我发现所有跟踪器都可以使用 var ga.getAll()
方法收听,如 https://developers.google.com/analytics/devguides/collection/analyticsjs/method-reference#blownaway
ga(function() {
var trackers = ga.getAll();
for (var i=0; i<trackers.length; ++i) {
var tracker = trackers[i];
tracker.send('pageview');
}
});
与其做ga('myTracker.send', 'pageview')
我可以使用上面的代码发送到所有跟踪器。但是我希望能够在ga('allTrackers.send', 'pageview')
方面做一些事情,而不必在我想发送命令的任何地方复制上面的代码。另一种选择是为每种类型的调用创建自定义方法,但我使用不同的参数执行许多不同的调用,因此这似乎也不是一个好方法。我确信一定有一些方法可以做到这一点,它比上面的方法更具可扩展性和更少重复性。
我想为allTrackers.send
、allTrackers.ecommerce:addTransaction
、allTrackers.ecommerce:addItem
和allTrackers.ecommerce:send
添加这种行为。(电子商务是指 https://developers.google.com/analytics/devguides/collection/gajs/gaTrackingEcommerce)
干杯!
编辑:
我刚刚注意到电子商务部分不适用于下面的菲利普先生的解决方案,代码返回"要求在 ga
跟踪器 #0 上不存在"、"电子商务:addTransaction 在 ga 跟踪器 #0 上不存在"、"电子商务:addItem 在 ga 跟踪器上不存在"、"电子商务:发送在 ga 跟踪器 #0 上不存在"。这些方法与其他方法略有不同,因为它们曾经由myTracker.ecommerce:send调用,而不仅仅是myTracker.send我想该方法需要更新以处理"电子商务:",但我不知道如何。
这是我尝试调用的代码,它返回错误:
allGa('require', 'ecommerce', 'ecommerce.js');
allGa('ecommerce:addTransaction', {
'id': '1234',
'affiliation': 'myCompany',
'revenue': '27.55',
'shipping': '0',
'tax': '0',
'currency': 'USD'
});
allGa('ecommerce:addItem', {
'id': '1234',
'name': 'MyProduct (Blue - XL)',
'sku': '',
'category': 'myCompany',
'price': '25.99',
'quantity': '1',
'currency': 'USD'
});
allGa('ecommerce:send');
allGa('send', {
'hitType': 'event',
'eventCategory': 'checkout',
'eventAction': 'view',
'eventLabel': 'completed'
});
allGa('send', 'pageview', '/checkout/complete');
您提供的代码是正确的。我做了一个基本函数,可以简单地用allGa( ... )
替换ga( ... )
。这使您可以直接更换,这要归功于使用.apply()
function allGa()
{
var args = [].slice.call(arguments),
method = args[0];
ga = window.ga;
if(method.indexOf('.') > 0)
{
// We only want to pass to 1 tracker
ga.apply(ga, arguments);
}
else
{
// Grab all of the trackers
ga(function()
{
var trackers = ga.getAll();
for (var i=0; i<trackers.length; ++i)
{
try {
var name = trackers[i].get('name'),
argsLocal = args.slice();
// Change the tracker name to the prefixed version
argsLocal[0] = name + '.' + argsLocal[0];
// Call the tracking call for this tracker
ga.apply(ga, argsLocal);
}
catch(e)
{
console.error(e.msg);
}
}
});
}
}
向所有跟踪链接发送网页浏览:
allGa('send', 'pageview');
向所有跟踪器发送事件:
allGa('send', 'event', 'category', 'action', 'label');
设置维度:
allGa('set', 'dimension1', 'testing');
向单个跟踪链接发送网页浏览
allGa('foobar.send', 'pageview');
- 动态分配GA增强型电子商务跟踪器
- 跟踪在页面加载时应用内联样式的JavaScript
- 跟踪用户点击Adsense广告的IP地址
- 跟踪jqplot垂直折线图的鼠标位置
- 点击facebook像素跟踪注册(JS/JQUERY代码)
- 有没有一种方法可以从URL跟踪请求的域
- Javascript-在视频中跟踪鼠标位置
- 在Google Analytics中跟踪用户,但只能在两个操作之间跟踪
- 如何使用Google Analytics跟踪表单提交
- Fresh Spark Install+Homestead上的Vue异步堆栈跟踪错误
- 对广告服务器的未知信标调用
- 代码挑战:创建一个跟踪对象实例总数的类Foo
- 打印javascript控制台的堆栈跟踪
- 谷歌分析:如何跟踪移动网站的点击量作为对主网站的点击
- 即使光标位于屏幕边缘,也可以跟踪鼠标速度
- Axios spread()具有未知数量的回调参数
- 什么'这是谷歌分析跟踪代码使用的技术
- 反汇编的javascript jit代码调用未知函数
- 未知”<#"构造
- 谷歌分析:使用多个未知跟踪器