gpt4 book ai didi

google-analytics - 如何调试 Google Analytics 跟踪错误(_gaq.push 返回 '3')

转载 作者:行者123 更新时间:2023-12-03 15:29:17 24 4
gpt4 key购买 nike

总结:

我误解了内容脚本的用法。这导致了这个问题。这是谷歌官方文档的引述:

Execution environment

Content scripts execute in a special environment called an isolated world. They have access to the DOM of the page they are injected into, but not to any JavaScript variables or functions created by the page. It looks to each content script as if there is no other JavaScript executing on the page it is running on. The same is true in reverse: JavaScript running on the page cannot call any functions or access any variables defined by content scripts.



更多细节:
Content Script tracking with Google Analytics

——

我正在向 Chrome 扩展程序中添加一些跟踪代码。但是当我测试它时,_gaq.push 返回数字 3。在我测试时,我想如果我在扩展中调用 _gaq.push,这个数字会不断上升。但是当我在控制台中调用它时,一切都很好(都是相同的代码)。

我想知道如何更深入地跟踪此错误?

非常感谢每一个答案!

更新:

当我追踪_gaq的返回值时,它仍然是一个数组。这意味着 ga.js 没有加载,对吧?

但似乎 ga.js 从未加载到我的脚本中。除非我在控制台中手动输入 _gaq,否则它是一个对象。这很奇怪。

我检查了 DOM,发现已经添加了标签。

我查看了网络面板,发现队列中根本没有加载 ga.js。但是为什么我仍然可以使用控制台访问 _gaq 对象?

更新2:

我使用console.log跟踪“window._gaq”的值,发现console.log(window._gaq)的返回值与在控制台中直接输入“window._gaq”不同。完全是两个不同的对象。我什至使用 setInterval 函数来记录结果,它一直在返回数组,而不是预期的对象。

最佳答案

运行您的脚本时 _gaq只是一个常规数组。就像 JavaScript 中的任何数组一样,它有方法 push将一个或多个元素插入数组并返回数组的最终长度。

例如:

var _gaq = [];
> undefined
_gaq.push(['_setAccount', 'UA-XXXXX-X']);
> 1
_gaq.push(['_setDomainName', 'mysite.com']);
> 2
_gaq.push(['_trackPageview'],
['_trackEvent', 'cat', 'act']);
> 4

加载 ga.js 文件后 _gaq读取数组以便可以处理插入其中的指令,然后是 _gaq数组被一个对象替换。该对象也实现了推送功能。但请注意,在这种情况下,push 函数将执行一条指令进入 ga.js 库,然后返回 0。

例如:
var _gaq = {
push: function(){
// Do something here
return 0;
}
};
> undefined
_gaq.push(['_trackPageview'])
> 0

这是一个非常聪明的谷歌设计,可以创建一个甚至在库 (ga.js) 加载之前就可以使用的 API。

这就是为什么在你的脚本中 _gaq.push是 Array 类的一个方法,返回递增的数字,在控制台上它总是返回 0。

这根本不是问题。它似乎按预期工作。

更新

ga.js 好像已经加载好了。也许它被缓存了,没有显示在网络面板上。

ga.js 由这部分跟踪脚本加载:
  (function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();

它是异步加载的。因此,在执行此代码段后,它将被加载,但加载的确切位置是未知的。

如果您需要知道 ga.js 文件何时加载,您可以将回调推送到 _gaq 中,它会在 ga.js 文件加载时执行。

例如:
_gaq.push(function(){
console.log('ga.js loaded!');
debugger;
});

关于google-analytics - 如何调试 Google Analytics 跟踪错误(_gaq.push 返回 '3'),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12984586/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com