2015-09-04 65 views
0

我试图在链接点击时触发一些跟踪信息,并且我一直在尝试从我在网上找到的不同地方放在一起的功能。在Omniture中全局设置Linktrack变量和事件,导致事件在其他动作中触发

经过一番测试后,我结束了两个函数,解雇了我想要的东西。然而,这些似乎是写入全局对象,因为在函数被调用后,事件在其他地方继续触发。我通过添加最后一行来解决这个问题,但这看起来像是一个可能掩盖潜在更大问题的创可贴。我首先做错了什么,我该怎么做才能避免这种情况?我不能让事件火而写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 
     } 

我猜问题是行标“嗯”,但是,这是我能得到的事件触发的唯一途径,如果我删除s.linkTrackEvents或s.events它不会触发事件。无论哪种方式,似乎我必须将所有变量设置为空字符串以避免其他操作使用的值。有任何想法吗?

感谢

回答

2

首先,当你想通过s.tl()电话,是的,他们必须是“注册” linkTrackEventslinkTrackVars将变量发送到Adobe Analytics(分析)。

但是,您可以pass the variables in an object as the 4th argument使用该呼叫的值,但不能永久设置它们。您仍然需要“注册”变量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); 
+0

你是男人。谢谢 – MaximusDecimusMeridius

+0

嘿,有什么方法可以直接与你联系? [email protected] – MaximusDecimusMeridius