Linktrack 变量和事件在 Omniture 中全局设置,导致事件触发其他操作

Linktrack variables and events set globally in Omniture, causing the event to fire on other actions

我正尝试在 link 点击时触发一些跟踪信息,并且我一直在尝试从网上找到的不同地方组合起来的功能。

经过一些测试,我最终得到了两个可以触发我想要的功能的函数。但是,这些似乎是在写入全局对象,因为调用函数后事件会在其他地方继续触发。我通过添加最后一行来解决这个问题,但这似乎是一个可能掩盖潜在更大问题的创可贴。首先我做错了什么,我应该怎么做才能避免这种情况?如果不写入 s.events 对象

,我无法触发事件
function f1(){
    s.linkTrackVars= s.linkTrackVars+',eVar45,events';
    s.eVar45='Chat button exposed';
    s.linkTrackEvents = s.events = 'event11'; // hmmm
    s.tl(this, 'o', 'blah');
    s.linkTrackVars = s.linkTrackEvents = s.events = ""; // Added this to empty the global objects
    }

function f2(){
        s.linkTrackVars= s.linkTrackVars+',eVar46,prop45,events';
        s.eVar46='Clicked chat button';
        s.prop45='Clicked chat button';
        s.linkTrackEvents = s.events = 'event31'; // hmmm
        s.tl(this, 'o', 'blah');
        s.linkTrackVars = s.linkTrackEvents =  s.events = ""; // Added this to empty the global objects
        }

我猜问题出在标记为 "hmm" 的行上,但如果我删除 s.linkTrackEvents 或 s.events 行,那是触发事件的唯一方法不会触发事件。无论哪种方式,我似乎都必须将所有变量设置为空字符串以避免其他操作使用这些值。有什么想法吗?

谢谢

首先,当您想通过 s.tl() 调用将变量发送到 Adob​​e Analytics 时,是的,它们必须是 "registered",linkTrackEventslinkTrackVars

但是,您可以 pass the variables in an object as the 4th argument 使用该调用的值,而不是永久设置它们。您仍然需要 "register" 带有 linkTrackEventslinkTrackVars 的变量,因此它也需要进入有效负载。

例子

function f1() {
  var payload={
    'linkTrackEvents':'event1',
    'linkTrackVars':'events,eVar1',
    'events':'event1',
    'eVar1':'bar'
  }
  s.tl(true,'o','some action',payload)
}

/* 
  first we have the var set, maybe as default values 
  in some config initially loaded on page
*/
s.linkTrackEvents='None';
s.linkTrackVars='None';
s.events='';
s.eVar1='foo';

// example to see current values above
console.log(s); 

/* 
  then call the function. You will see in the 
  request that event1 is set and eVar1 is 'bar'
*/
f1();

/* 
  now another console log to see the values, 
  you will see it's the original values
*/
console.log(s);