1

我正在为 Site Catalyst 使用omniture jasavscript。

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

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

似乎它正在使用缓存。

更新

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

但它没有奏效

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

4

2 回答 2

1

没有看到任何代码,我只能推测,但我的猜测是额外的命中来自 SiteCatalyst 的自动链接跟踪 - 要么是因为目标 URL 未列出而导致的退出链接,要么是linkInternalFilters因为目标 URL 以列出的内容结尾的下载链接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()传递,它会将传递的参数与目标 URL 进行匹配。

  • 如果这还不够好,在if(s.url)条件范围内,您可以使用s.url.

  • 如果您需要通过链接的某些 DOM 属性来定位,则在条件内,s.eo是对被单击链接的对象引用,因此您可以围绕它编写自己的条件。
于 2013-07-01T15:08:27.673 回答
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;并附加一个包含您的域名的查询参数的 url,该参数与s.linkInternalFilters. 例如<a href="http://facebook.com?r=yourDomain.com">Share</a>

选项 3

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

我会推荐选项3。

于 2014-11-06T20:12:48.177 回答