谷歌分析,_gaq.push(callback),回调永远不会被执行



我正在使用谷歌分析和跟踪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();                
})

您犯了一个简单的错误,即尝试将回调函数插入Array.prototype的 push 方法,默认情况下不存在。我的意思是,Array.prototype.push()不接受回调函数。由于_gaqArray,因此无法正常工作。您正在做的只是在调用_gaq.push(function(){...});时将刚刚定义的函数添加到数组_gaq,这样它就不会触发任何函数调用。你可以做的是自己定义一个函数,就像这里的这个人试图做的那样。

为了简单起见,让我在这里添加代码:

_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时也会执行。同样,这不是回调,只是在推送该函数时执行的函数调用。

最新更新