2015-02-23 54 views
0

我们正在使用W3的数据层规范(http://www.w3.org/2013/12/cedd ...,它将事件数据定义为事件数组,而不是数据元素访问数据元素中最后一项的问题在DTM进行收集事件数据时,数组中的最后一个事件对象可能不是正确的,如果两个事件快速发送,则第一个事件的数据对象是跳过最后一个事件的数据对象被使用了两次Adob​​e动态标签管理 - 动态直接呼叫规则

Stategy 1: 创造了许多直接调用规则,一个事件的每个可能的数字,并为每个规则的数据元素访问该项目i n个数组: _satillite.track(“event_0”) _satillite.track(“event_1”)......

不完全是好玩成立,仍然面临的或许是将其具有足够的规则问题,是不干净。

策略2: 还有在直接呼叫状态使用的数据元素的posibility: event_%event_number%

不知道如何在条件字符串中使用的数据元素会工作。

策略3 使用FIFO队列来保存事件顺序的键和事件在数据层的事件的对象。在标签中使用的数据Evements

_satillite.track('event'); 

然后查询正确的事件数据:

var order_of_events = ['asdf', '1234']; 
var events_number = { 
    'asdf': 1, 
    '1234': 2 
}; 

然后直接发送呼叫事件规则

// Data Element code 
// %next_eventName% 
var event_key = getKey(); // returns first key in array 
event_number = getValue(asdf); // returns 1 
getEventName(event_number); // returns "Event Name" 

如何通知队列该标签是通过事件详细信息完成的,并将密钥移出队列?

可以使用什么策略来确保数据元素使用了正确的事件数据对象,以上任何一种情况,还是已经解决了这个问题?

+0

您能否提供一个“真实生活”场景,用于“何时快速连续发生多个事件”?我可以想到很多,但是从跟踪PoV来看,这通常不是一件好事情,通常*涉及重新考虑你正在追踪的内容。例如,我有客户要求追踪访问者是否将鼠标悬停在表单元素上,或追踪页面滚动的每一个百分比。这通常是一个坏主意,原因很多。所以首先,你能否澄清一下你想跟踪的具体内容? – 2015-02-23 14:29:18

回答

0

一个可能的解决方案: 使用事件对象的eventInfo.eventAction键值。当你在数组中添加一个事件时,你可以调用一个通用的_satllite.track('event_added')直接调用规则。在直接呼叫规则中,您可以将事件从digitalData.events中取出,循环播放并在直接呼叫规则中调用相应的方法。

var eventActions={ 
    method1:function(event){ 
    //_satellite.track('method1'); 
    //or s.tl(event.eventInfo.eventName, true, 'hello world'); 
    //handle each event however you may like for analytics, testing, page manipulation etc. 
    } 
} 

digitalData.events.forEach(function(item,index,arr){ 
    eventActions[item.eventInfo.eventAction](item); 
}); 

这就是我打算做的,但它可能不适合您的需求。