2013-07-01 45 views
1

我正在使用SiteOne Catalyst的omniture jasavscript。omniture's s.tl()中的多個跟蹤onclick鏈接,無法找出

其中,我填充鏈接所需的變量onclick。

但問題是我得到一個單一的點擊多(2)跟蹤,這不是理想的行爲。在這兩個跟蹤中,我得到的第一個是舊的,之後我得到第二個最新的跟蹤。

它似乎是使用緩存內存。

UPDATE

我試圖通過之前和使用s.tl('this','e','',null);

後使用var s = {};重新初始化對象,但它沒有工作

可能有人建議它如何被糾正。

+0

你有任何代碼可以告訴我們嗎?我不知道這項技術,但看起來可能需要解決方案。 –

+0

@JanDvorak檢查更新 – Padyster

回答

1

沒有看到任何代碼我只能推測,但我的猜測是附加命中是從SiteCatalyst的自動鏈接跟蹤 - 要麼是退出鏈接,因爲目標URL沒有列在linkInternalFilters中,要麼是下載鏈接,因爲目標URL以linkDownloadFileTypes中列出的內容結尾。

我懷疑,鑑於您的s.tl()示例的參數'e',該鏈接是退出鏈接。所以在那個筆記上..也許這裏的解決方案是搭載自動退出鏈接跟蹤,而不是自己撥打s.tl()。 Adobe有一個名爲exitLinkHandler的插件,可讓您在發生自動退出鏈接跟蹤時觸發其他變量。

這裏是插件:

/* 
* Plugin: exitLinkHandler 0.5 - identify and report exit links 
*/ 
s.exitLinkHandler=new Function("p","" 
+"var s=this,h=s.p_gh(),n='linkInternalFilters',i,t;if(!h||(s.linkTyp" 
+"e&&(h||s.linkName)))return '';i=h.indexOf('?');t=s[n];s[n]=p?p:t;h=" 
+"s.linkLeaveQueryString||i<0?h:h.substring(0,i);if(s.lt(h)=='e')s.li" 
+"nkType='e';else h='';s[n]=t;return h;"); 

在您s_doPlugins功能,添加以下內容:

s.url = s.exitLinkHandler(); 
if (s.url) { 
    // pop your variables here. Don't forget to pop `linkTrackVars` and `linkTrackEvents`, same as you would have done before 
} 

現在,這會讓你的其他變量上彈出任何退出鏈接觸發。如果你想讓它僅觸發某些URL匹配,或者只在特定的比賽,你可以這樣做多種方式,根據您的需要:

  • 如果你只需要做一個普通字符串匹配,你可以傳遞一些 或所有目標網址作爲 s.exitLinkHandler()的第一個參數,並且它將匹配傳遞的參數與目標網址的 。

  • 如果這還不夠好,if(s.url)條件中,你可以 反對使用s.url目標 URL執行自己的匹配(例如,正則表達式匹配)。

  • 如果需要通過鏈接的一些DOM屬性爲目標,在 條件中,s.eo是一個對象引用的鏈接,這是 點擊,所以你可以寫身邊的是你自己的條件。
0

選項1

Omniture的不追蹤#退出鏈接的鏈接,以便你可以這樣做:

<a href="#http://google.com" data-track-msg="Tracking Message" class="prepended-with-hash-for-tracking">Search</a> 

<script> 
(function(){ 
    'use strict'; 

    var links = document.querySelectorAll('.prepended-with-hash-for-tracking'); 

    var track = function(e) { 
    e.preventDefault(); 
    var link = e.currentTarget; 
    var url = link.href; 
    var trackingMessage = link.getAttribute('data-track-msg'); 

    // Remove the hash. 
    if (url[0] === '#') { 
     url = url.substr(1); 
    } 

    // Track in omniture. 
    var s = s_gi('InsertYourRSID'); 
    s.tl(link, 'o', trackingMessage, null, function(){ 
     window.location.href = url; 
    }); 
    }; 

    for (var i = 0, len = links.length; i < len; i++) { 
    links[i].addEventListener('click', track, false); 
    } 

})(); 
</script> 

選項2

另一個工作-A輪是請設置s.linkLeaveQueryString = true;,然後在網址後面添加一個查詢參數,其中包含與s.linkInternalFilters中的字符串匹配的域名。例如<a href="http://facebook.com?r=yourDomain.com">Share</a>

選項3

通過設置 s.trackExternalLinks=false;然後你就可以處理與使用JavaScript類似選項1

我會建議選項調用s.tl()事件處理程序的所有外部鏈接

禁用Omniture的默認外部鏈接跟蹤3.