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

den*_*lau 1 javascript google-analytics

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

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

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

ga('create', 'TRACK-ID');
ga('send', 'something', 'something);
Run Code Online (Sandbox Code Playgroud)

插入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');
Run Code Online (Sandbox Code Playgroud)

好吧,我可以制作ga变量并在我的"本地"文件中插入警报事件(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);
        })()
    );
}
)();
Run Code Online (Sandbox Code Playgroud)

问题是,当我使用函数"ga"时,它不会警告create-alert或send-alert.

编辑1:

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

我对静态消息的警报被正确触发 - 但是我返回函数并提醒它参数的方法只是将参数值保留为"未定义",我不希望它们是"发送","创建"等等.

编辑2:

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

ga('send', 'someStr', 'someVal');
Run Code Online (Sandbox Code Playgroud)

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

Jes*_*ess 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');
Run Code Online (Sandbox Code Playgroud)

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

ga('create','a','b');
Run Code Online (Sandbox Code Playgroud)

  • 现在我在这篇文章中看到了*logic*.+1 (2认同)