我正在使用针对Site Catalyst的omniture jasavscript。
其中,我在链接上填充所需的变量。
但问题是我在单击时获得了多次(2)跟踪,这不是理想的行为。在这两个跟踪中,我得到的第一个是旧的跟踪,然后我得到了第二个最新的跟踪。
好像是在使用缓存。
更新
我尝试在使用var s = {};
之前和之后使用s.tl('this','e','',null);
重新初始化对象
但它没效果
有人可以建议如何纠正它。
答案 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
的网址。
s.eo
是对链接的对象引用
点击,这样你就可以自己编写条件了。答案 1 :(得分:0)
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;
,然后使用包含与s.linkInternalFilters
中的字符串匹配的域名的查询参数附加网址。例如<a href="http://facebook.com?r=yourDomain.com">Share</a>
通过设置s.trackExternalLinks=false;
来停用omniture的默认外部链接跟踪,然后您可以使用一个事件处理程序处理所有外部链接,该事件处理程序使用类似于选项1的JavaScript调用s.tl()
。
我建议选项3。