总结:
我误解了内容脚本的使用方法,导致出现了这个问题。以下是来自谷歌官方文档的一段引用:
执行环境
内容脚本在一个被称为隔离世界的特殊环境中执行。它们可以访问注入页面的DOM,但不能访问页面创建的任何JavaScript变量或函数。对于每个内容脚本而言,在其运行的页面上似乎没有其他JavaScript正在执行。反之亦然:在页面上运行的JavaScript不能调用由内容脚本定义的任何函数或访问任何变量。
更多细节信息: 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函数来记录结果,它仍然返回数组,而不是预期的对象。