我们的应用程序在跟踪Google Analytics分析请求时存在问题。除非用于通过setTimeout调用用于向谷歌发送请求的方法,否则不会在firefox中跟踪内部链接。所以我有这个代码工作,但已经离开几个月,发现一个同事完全改变了配置文件并删除了setTimeout调用。现在当我把代码放回去(带有额外的新变量)时,我在browswer中得到一个js错误,说没有定义callGA。这是我的代码:
function trackPageview(id, countryCity, unique, bu, bg, areaClick, uri) {
setTimeout("callGA('" + id + "','" + countryCity + "','" + unique + "','" + bu + "','" + bg + "','" + areaClick + "','" + uri +"')", 1);
}
function callGA(id, countryCity, unique, bu, bg, areaClick, uri) {
_gaq.push([ '_setAccount', id ]);
_gaq.push([ '_setCustomVar', 1, 'Location', countryCity, 3 ]);
_gaq.push([ '_setCustomVar', 2, 'Unique', unique, 3 ]);
_gaq.push([ '_setCustomVar', 3, 'BU', bu, 3 ]);
_gaq.push([ '_setCustomVar', 4, 'BG', bg, 3 ]);
_gaq.push([ '_setCustomVar', 5, 'Portlet', areaClick, 3 ]);
if (uri) { _gaq.push([ '_trackPageview', uri ]); } else { _gaq.push([ '_trackPageview' ]); }
};
在多个地点调用trackPageviews。我已在此处发出警报并且很好,问题出在setTimeout行。
非常感谢任何帮助。
答案 0 :(得分:3)
最好不要在setTimeout中引用动作。它使用eval(),这有点凌乱(和糟糕的做法)。最好使用匿名函数。
setTimeout(function() {
callGA(id,countryCity,unique,bu,bg,areaClick,uri)
}, 1);
答案 1 :(得分:1)
为什么不将callGA
函数放在setTimeout中?
function trackPageview(id, countryCity, unique, bu, bg, areaClick, uri) {
setTimeout(function (id, countryCity, unique, bu, bg, areaClick, uri) {
_gaq.push([ '_setAccount', id ]);
_gaq.push([ '_setCustomVar', 1, 'Location', countryCity, 3 ]);
_gaq.push([ '_setCustomVar', 2, 'Unique', unique, 3 ]);
_gaq.push([ '_setCustomVar', 3, 'BU', bu, 3 ]);
_gaq.push([ '_setCustomVar', 4, 'BG', bg, 3 ]);
_gaq.push([ '_setCustomVar', 5, 'Portlet', areaClick, 3 ]);
if (uri) {
_gaq.push([ '_trackPageview', uri ]);
} else {
_gaq.push([ '_trackPageview' ]);
}
} , 1);
}