可以找出omniture的s.tl()的多个跟踪onclick链接

时间:2013-07-01 10:40:17

标签: javascript adobe-analytics

我正在使用针对Site Catalyst的omniture jasavscript。

其中,我在链接上填充所需的变量。

但问题是我在单击时获得了多次(2)跟踪,这不是理想的行为。在这两个跟踪中,我得到的第一个是旧的跟踪,然后我得到了第二个最新的跟踪。

好像是在使用缓存。

  

更新

我尝试在使用var s = {};之前和之后使用s.tl('this','e','',null);重新初始化对象

但它没效果

有人可以建议如何纠正它。

2 个答案:

答案 0 :(得分:1)

没有看到我只能推测的任何代码,但我的猜测是来自SiteCatalyst的自动链接跟踪的额外命中 - 因为目标URL未在linkInternalFilters中列出,所以是退出链接,或者因为下载链接目标网址以linkDownloadFileTypes中列出的内容结尾。

我怀疑,鉴于您的'e'示例的s.tl()参数,该链接是退出链接。所以在那个说明..也许这里的解决方案是捎带自动退出链接跟踪,而不是进行自己的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匹配,或仅触发特定匹配,您可以根据需要以多种方式执行此操作:

  • 如果您只需要进行一般的子字符串匹配,则可以传递一些 或者所有目标URL作为第一个参数 s.exitLinkHandler()它将匹配传递的参数 目标网址。

  • 如果这还不够好,在if(s.url)条件下,你可以 对目标执行您自己的匹配(例如正则表达式匹配) 使用s.url的网址。

  • 如果您需要通过链接的某些DOM属性进行定位,请在 condition,s.eo是对链接的对象引用 点击,这样你就可以自己编写条件了。

答案 1 :(得分: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

另一项工作是设置s.linkLeaveQueryString = true;,然后使用包含与s.linkInternalFilters中的字符串匹配的域名的查询参数附加网址。例如<a href="http://facebook.com?r=yourDomain.com">Share</a>

选项3

通过设置s.trackExternalLinks=false;来停用omniture的默认外部链接跟踪,然后您可以使用一个事件处理程序处理所有外部链接,该事件处理程序使用类似于选项1的JavaScript调用s.tl()

我建议选项3。