将变量作为字符串参数传递给gaq.push

时间:2013-02-08 16:45:33

标签: javascript function parameters google-analytics

我正在使用以下代码向导航菜单链接添加Google Analytics跟踪事件:

(function ($) {
    "use strict";
    $(function () {
        $("body").on('click', '.menu-item a', function () {
            var trackingCode = $(this).next(".ga-tracking");
            if (trackingCode.length > 0) {
                var t1 = trackingCode.data("tracking-1"),
                    t2 = trackingCode.data("tracking-2"),
                    t3 = trackingCode.data("tracking-3"),
                    t4 = trackingCode.data("tracking-4"),
                    params = "'" + t1 + "','" + t2 + "','" + t3 + "'";
                _gaq.push([params]);
            }

        });
    });
}(jQuery));

你可以看到它在这里工作:http://paulwp.com/blog/ 要触发代码,请单击顶部黑色栏中的博客链接。

这是我得到的错误:

_gaq.push processing "'_trackEvent','Store_Outbound','Link_Click'" for args: "[]":  

Called method "'_trackEvent','Store_Outbound','Link_Click'" threw exception.TypeError: Cannot call method 'apply' of undefined 

虽然它应该给出这样的东西:

_gaq.push processing "_trackEvent" for args: "[Store_Outbound,Link_Click]":  

猜测这是我使用引起问题的变量构建参数的方式

1 个答案:

答案 0 :(得分:2)

您传递的错误值。这实际上就是你在做的事情:

_gaq.push(["a,b,c"]);

这是一个包含单个元素的数组。

这应该是这样的:

_gaq.push(["a","b","c"]);

这是一个包含多个元素的数组。

所以基本上你需要做

params = [t1,t2,t3];
_gaq.push(params);

或直接将它们放入:

_gaq.push([t1,t2,t3]);