我们最近升级到最新版本的Omniture代码AppMeasurement 1.2.3。我们尝试使用s.tl功能记录用户点击我们网站中不同链接的时间。不幸的是,我很难在Chrome上工作。
我们的链接有一个数据轨道属性,其中包含一个字符串,用于标识用户点击的链接类型:
<a href="latest-news.php" data-track="Latest News">Latest News</a>
然后我们有这个点击处理程序:
$('#pageBody')
.off('click.omniture')
.on('click.omniture', '[data-track]', function () {
var track = this.getAttribute('data-track') || 'generic-link';
OmnitureUtil.trackWidgetLink(track, this);
});
调用这种处理Omniture调用的函数:
OmnitureUtil.trackWidgetLink : function(linkName, linkElement) {
s = s_gi(s_account);
s.tl(linkElement, 'e', linkName, null, 'navigate');
return false;
},
&#39; trackWidgetLink&#39;在Chrome中调用,导航发生,但Charles代理客户端显示没有发出Omniture图像请求。因此,不会跟踪点击事件。这在Firefox中运行良好。我很清楚WebKit浏览器的问题,浏览器在JS有机会发送之前取消了图像请求。但那是supposedly fixed in H25,AFAIK我使用Omniture推荐的方法解决这个问题。
直接调用该方法在控制台中运行正常,它可以作为内联单击处理程序工作,例如
<a href="latest-news.php" data-track="Latest News" onclick="s.tl(this,'e','xxx',null,'navigate');return false">Latest News</a>
但我不愿意为我们所有的链接添加内联处理程序。有没有其他人在新的Omniture代码中遇到过这种问题?谁能看到我做错了什么?
答案 0 :(得分:0)
哎呀,我只需要从我的点击处理程序而不是trackWidgetLink
返回false,所以:
$('#pageBody')
.off('click.omniture')
.on('click.omniture', '[data-track]', function () {
var track = this.getAttribute('data-track') || 'generic-link';
OmnitureUtil.trackWidgetLink(track, this);
return false;
});
这允许代码在Chrome中运行。