我遇到了谷歌分析的问题。我知道那里有很多,但找不到解决方案。
我想将用户的电子邮件地址记录为Google Analytics中的自定义变量。我在一个函数中有google analytics片段,并传入用户的电子邮件地址。
GA插件不会向控制台窗口输出任何内容。
没有javascript错误。
我通过断点逐步完成代码,下面的函数一直运行完成。它进入if语句等。
文件ga.js加载成功,但__utm.gif文件未被调用。
<script type="text/javascript">
//<![CDATA[
function googleTrack(email) {
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'xyz']);
_gaq.push(['_trackPageview']);
if ((parent == null) || (!parent.IsCMSDesk)) {
//track user name
_gaq.push(['_setCustomVar', //1, \"Email address\", \"{0}\", 3)
1, // This custom var is set to slot #1. Required parameter.
'email_address', // The name acts as a kind of category for the user activity. Required parameter.
email, // This value of the custom variable. Required parameter.
3 // Sets the scope to page-level. Optional parameter.
]);
//if googleCustomVar is defined, it will track it. if not, won't
if (!((typeof (window.googleCustomVar) === "undefined") && (typeof (googleCustomVar) === "undefined"))) {
_gaq.push(['_setCustomVar', //1, \"Email address\", \"{0}\", 3)
2, // This custom var is set to slot #1. Required parameter.
'section', // The name acts as a kind of category for the user activity. Required parameter.
googleCustomVar, // This value of the custom variable. Required parameter.
3 // Sets the scope to page-level. Optional parameter.
]);
}
}
(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);
})();
}
googleTrack('testm@healthed.com');
//]]>
</script>
如果我只是这个代码,那么所有的事情都会再次发挥作用:
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'xyz']);
_gaq.push(['_trackPageview']);
(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);
})();
这里什么不起作用?最终目标是能够调用一个功能,将用户的电子邮件地址作为Google分析中的自定义变量进行跟踪。
答案 0 :(得分:4)
您将_gaq
定义为函数内的局部变量。因此,Google Analytics代码无法读取变量。原始代码使用var
工作,因为它在本地范围内执行。要在函数内声明全局范围中的变量,请省略var
或使用window._gaq = ...
:
你破碎的代码:
<script type="text/javascript">
//<![CDATA[
function googleTrack(email) {
var _gaq = _gaq || []; //<--- `var` inside a function = local variable
修正了工作代码:
_gaq = _gaq || [];