根据enter link description here的文档
,我正在使用谷歌分析和跟踪iframe的数据所以在外页(包含iframe)中我使用_gaq.push()
方法来推送并执行在运行时嵌入iframe的回调。
但该回调永远不会被执行。
此外,在外页我有两个跟踪脚本,回调必须由第二个跟踪脚本执行。
推送回调的代码如下
_gaq.push(['ga_code_second_tracking_script._setAccount', '<ga_code_of_second_tracking_script>']);
_gaq.push(function(){
console.log('IN PUSH');
var tracker = _gat._getTracker('<ga_code_of_second_tracking_script>');
embedIframe();
})
答案 0 :(得分:0)
您尝试将回调函数插入Array.prototype
的推送方法时会犯一个简单的错误,默认情况下该方法不存在。我的意思是,Array.prototype.push()
不接受回调函数。由于_gaq
是Array
,因此无效。您正在做的是,当您调用_gaq
时,只需将您刚定义的函数添加到数组_gaq.push(function(){...});
,这样就不会触发任何函数调用。你可以做的是自己定义一个函数like this person here is trying to do。
为简单起见,我在这里添加代码:
_gaq.push = function (){
//Callback Function Call here...
return Array.prototype.push.apply(this,arguments);
}
每次使用_gaq.push()
函数时,此方法都会执行回调。
您似乎误解了Google Developer Docs中的文档。它指出,In addition to pushing command arrays, you can also push function objects. This can be especially useful for tracker methods that return values. These functions can reference both _gat and _gaq.
您只是推送一个函数对象,而不是将该函数用作回调。请明确这一点。如果函数返回GA应该使用的任何值,例如,返回可以推送到GA的字符串数组的函数,则会推送返回值。
而且确实,您在问题中指的是analytics.js
(文档的链接),而_gaq
对象从未在该实现中使用(_gaq
是仅用于较早的ga.js
实现。)
即使是简单的function(){alert('1');}
,也会在推送到_gaq
时执行。同样,这不是回调,只是在推送该函数时执行的函数调用。