我正在尝试捕获某些下载链接的点击并在 Google Analytics 中跟踪它们。这是我的代码
var links = document.getElementsByTagName("a");
for (var i = 0; i < links.length; i++) {
linkpath = links[i].pathname;
if( linkpath.match(/\.(pdf|xls|ppt|doc|zip|txt)$/) || links[i].href.indexOf("mode=pdf") >=0 ){
//this matches our search
addClickTracker(links[i]);
}
}
function addClickTracker(obj){
if (obj.addEventListener) {
obj.addEventListener('click', track , true);
} else if (obj.attachEvent) {
obj.attachEvent("on" + 'click', track);
}
}
function track(e){
linkhref = (e.srcElement) ? e.srcElement.pathname : this.pathname;
pageTracker._trackPageview(linkhref);
}
直到 pageTracker._trackPageview() 调用正常为止的一切。在我的调试中,linkhref 被作为字符串很好地传递。没有异常字符,什么都没有。问题是,在观看我的 http 请求时,Google 从来没有对跟踪 gif 进行第二次调用(就像您在“onclick”属性中调用此函数一样)。从我的 JS 控制台调用跟踪器也可以按预期工作。它只存在于我的听众中。
是不是我的听众在有机会联系 Google 的服务器之前没有推迟默认操作(加载新页面)?我见过其他跟踪脚本做类似的事情而没有任何延迟。