首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >s.tl()的多重跟踪点击链接,康特指出

s.tl()的多重跟踪点击链接,康特指出
EN

Stack Overflow用户
提问于 2013-07-01 10:40:17
回答 2查看 2.7K关注 0票数 1

我正在使用一个全家具jasavscript的网站催化剂。

在其中,我将在链接的点击中填充所需的变量。

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

它似乎在使用缓存内存。

更新

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

但这不起作用

有人能建议怎么纠正它吗。

EN

回答 2

Stack Overflow用户

发布于 2013-07-01 15:08:27

在没有看到任何代码的情况下,我只能推测,但我的猜测是,额外的命中来自Site催化剂的自动链接跟踪--要么是由于目标URL未在linkInternalFilters中列出而成为退出链接,要么是因为目标URL以linkDownloadFileTypes中列出的内容结尾。

考虑到您的'e'示例中的s.tl()参数,我怀疑链接是一个退出链接。所以在那个音符上..。也许这里的解决方案是放弃自动退出链接跟踪,而不是自己调用s.tl()。Adobe有一个名为exitLinkHandler的插件,它允许您在自动退出链接跟踪发生时触发额外的变量。

下面是插件:

代码语言:javascript
复制
/*
* 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函数中添加以下内容:

代码语言:javascript
复制
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对目标URL执行自己的匹配(例如regex匹配)。
  • 如果需要以链接的DOM属性为目标,在条件内,s.eo是对单击的链接的对象引用,因此您可以围绕该链接编写自己的条件。
票数 1
EN

Stack Overflow用户

发布于 2014-11-06 20:12:48

备选案文1

Omniture不跟踪#作为退出链接的链接,因此您可以执行以下操作:

代码语言:javascript
复制
<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

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

我建议备选案文3。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17402531

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档