我正在为 Site Catalyst 使用omniture jasavscript。
在其中,我正在填充所需的变量 onclick 链接。
但问题是我单击一次即可获得多次 (2) 跟踪,这不是理想的行为。在这 2 个跟踪中,我得到的第一个是旧的,然后我得到了第二个最新的跟踪。
似乎它正在使用缓存。
更新
我尝试通过在使用var s = {};
之前和之后重新初始化对象s.tl('this','e','',null);
但它没有奏效
有人可以建议如何纠正它。
我正在为 Site Catalyst 使用omniture jasavscript。
在其中,我正在填充所需的变量 onclick 链接。
但问题是我单击一次即可获得多次 (2) 跟踪,这不是理想的行为。在这 2 个跟踪中,我得到的第一个是旧的,然后我得到了第二个最新的跟踪。
似乎它正在使用缓存。
更新
我尝试通过在使用var s = {};
之前和之后重新初始化对象s.tl('this','e','',null);
但它没有奏效
有人可以建议如何纠正它。
没有看到任何代码,我只能推测,但我的猜测是额外的命中来自 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
.
s.eo
是对被单击链接的对象引用,因此您可以围绕它编写自己的条件。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>
另一个工作是设置s.linkLeaveQueryString = true;
并附加一个包含您的域名的查询参数的 url,该参数与s.linkInternalFilters
. 例如<a href="http://facebook.com?r=yourDomain.com">Share</a>
通过设置禁用omniture的默认外部链接跟踪s.trackExternalLinks=false;
,然后您可以使用事件处理程序处理所有外部链接,该事件处理程序s.tl()
使用类似于选项1的JavaScript调用。
我会推荐选项3。