我正在使用一个全家具jasavscript的网站催化剂。
在其中,我将在链接的点击中填充所需的变量。
但问题是,我得到了一个多个(2)跟踪一次点击,这不是理想的行为。在这两个跟踪中,我得到的FIrst一个是旧的,然后我得到了第二个最新的跟踪。
它似乎在使用缓存内存。
更新
在使用var s = {};之前和之后,我尝试使用s.tl('this','e','',null);重新初始化对象
但这不起作用
有人能建议怎么纠正它吗。
发布于 2013-07-01 15:08:27
在没有看到任何代码的情况下,我只能推测,但我的猜测是,额外的命中来自Site催化剂的自动链接跟踪--要么是由于目标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匹配时触发,或者仅在特定匹配时触发,则可以通过多种方式执行,具体取决于您的需要:
s.exitLinkHandler()的第一个参数传递,它将与目标URL匹配传递的参数。if(s.url)条件下,您可以使用s.url对目标URL执行自己的匹配(例如regex匹配)。s.eo是对单击的链接的对象引用,因此您可以围绕该链接编写自己的条件。发布于 2014-11-06 20:12:48
备选案文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
通过设置s.trackExternalLinks=false;禁用omniture的默认外部链接跟踪,然后您可以使用一个事件处理程序处理所有外部链接,该事件处理程序使用类似于选项1的JavaScript调用s.tl()。
我建议备选案文3。
https://stackoverflow.com/questions/17402531
复制相似问题