在javascript中使变量成为一个函数

时间:2014-02-05 18:32:48

标签: javascript google-analytics

我目前正尝试使用Google Analytics等操作,并使用Javascript制作数据传输/跟踪脚本。

我的方法是,我想在Google Analytics等网站上制作一个简短的脚本/代码片段。跟踪脚本 - 这部分非常简单。

问题是,使用Google分析,他们会在代码段(网站上的代码)中创建一个ga变量,以及设置变量如下:

ga('create', 'TRACK-ID');
ga('send', 'something', 'something);

HTML页面中插入的JavaScript代码段(就像Google Analytics'):

(function(i, s, o, g, r, a, m){
    i['ChurnimizerTrackObj'] = r;

    i[r] = i[r] || function(){
        (i[r].q = i[r].q || []).push(arguments);
    },

    i[r].l = 1 * new Date();

    o = o || "script";

    a       = s.createElement(o),
    m       = s.getElementsByTagName(o)[0];

    a.async = 1;
    a.src   = g;

    m.parentNode.insertBefore(a, m)
})(window, document, 'script', 'cm.js', 'ga');

ga('send', 'test');     
ga('create', 'TR-XXXXXX');

好吧,我可以制作ga变量并在我的" local" -file(JS文件,应该执行所有逻辑)中插入一个警报事件,但我不能得出为什么我的功能不像上面这样工作? 我的本地文件是:

(
function(){
    alert("something");

    (
        return (function(a, b, c){
            alert("test");

            switch(a){
                case "create":
                    alert("A is create");
                case "send":
                    alert("A is send");
            }
            alert(a);
        })()
    );
}
)();

问题是,当我使用" ga"时,它不会提醒创建警报或发送警报。

编辑1:

我想知道的是,我如何从" ga"中获取功能参数。本地文件中的变量?

我对静态消息的警报被正确触发 - 但是我返回一个函数并提示它的参数的方法只是将参数值保留为" undefined&#34 ;,我在哪里'他们是"发送","创建"等等。

编辑2:

我想要的是通过将变量名称ga作为函数名称来将变量从Snippet传递到本地javascript文件。像:

ga('send', 'someStr', 'someVal');

如何进入州,我可以使用我的ga变量作为在本地文件中设置一些信息的函数? : - )

1 个答案:

答案 0 :(得分:5)

效果更好。您需要break内的switch语句。

编辑:我还更改了代码,以便您可以将新功能附加到您想要的任何内容,在此示例中为window。您还可以传入函数的名称,在此示例中为ga

(function(obj,name){
    alert("something");

    obj[name] = function(a, b, c){
        alert("test");

        switch(a){
            case "create":
                alert("A is create"); break;
            case "send":
                alert("A is send"); break;
        }
        alert(a);
    };
})(window,'ga');

现在你可以这样打电话给ga:

ga('create','a','b');