如何在新的Google Analytics代码中放置自定义变量

7
我想在Google Analytics中放置自定义变量,但语法让我有点困惑。
这是Google给我的放置代码:
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

  ga('create', 'UA-xxxxxxx', 'xxxxx.com');
  ga('send', 'pageview');

这是我想用于自定义变量的内容:-
var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-xxxxxx-XX']);
  _gaq.push(['_setCustomVar', 1, 'age', '<?php echo $_GET["age"]; ?>', 1]);
  _gaq.push(['_setCustomVar', 2, 'gender', '<?php echo $_GET["gender"];?>', 1]);

现在我看到的示例说,我需要将自定义变量代码放置为:-
  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-xxxxxx-XX']);
  _gaq.push(['_setCustomVar', 1, 'age', '<?php echo $_GET["age"]; ?>', 1]);
  _gaq.push(['_setCustomVar', 2, 'gender', '<?php echo $_GET["gender"];?>', 1]);
  _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 Analytics代码是否正确,可以用于添加自定义变量?

  var _gaq = _gaq || [];
      _gaq.push(['_setAccount', 'UA-xxxxxx-XX']);
      _gaq.push(['_setCustomVar', 1, 'age', '<?php echo $_GET["age"]; ?>', 1]);
      _gaq.push(['_setCustomVar', 2, 'gender', '<?php echo $_GET["gender"];?>', 1]);
      _gaq.push(['_trackPageview']);


(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
      (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
      m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
      })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

      ga('create', 'UA-xxxxxxx', 'xxxxx.com');
      ga('send', 'pageview');

2
你已经暴露自己于 XSS 攻击的风险。在 JavaScript 上下文中使用的任何变量数据应该先经过 json_encode() 处理!不要盲目地插入用户定义的值到你的代码中。 - Brad
谢谢Brad。我会把这个修好的。 - Steve
1个回答

15

你确实混淆了两个不兼容的Google Analytics库 - ga.jsanalytics.js

在analytics.js库中,自定义变量并不存在,你应该使用自定义维度代替。 如果你在JavaScript中定义了年龄和性别变量,那么可以使用以下调用来将它们与页面浏览一起传递:

<script>

(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');

ga('create', 'UA-XXXX-Y');
ga('send', 'pageview', {
 'dimension1':  age,
 'dimension2':  gender
 });

</script>

在Google Analytics的自定义维度界面中定义了作用域(点击次数/访问次数/访客数)和变量名,而不是在您的代码中定义。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接