javascript - 在javascript中使变量成为函数

标签 javascript google-analytics

我目前正在尝试做类似 Google Analytics 的事情,并使用 Javascript 制作数据传输/跟踪脚本。

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

问题是,使用 Google Analytics,他们在代码段(网站上的代码)中创建了一个 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 变量并在我的“本地”文件(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”变量获取函数参数?

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

编辑 2:

我想要的是通过将变量名 ga 作为函数名来将代码段中的变量传递到本地 javascript 文件。喜欢:

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

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

最佳答案

这样效果更好。您需要在 switch 中使用 break 语句。

编辑:我还更改了代码,以便您可以将新函数附加到您想要的任何内容,在本例中为 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');

关于javascript - 在javascript中使变量成为函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21585578/

相关文章:

google-analytics - GA Measurement Protocol 中报告的移动数据实时显示,但不显示在每日摘要中

ajax - 谷歌分析和使用 ajax GET 请求加载页面

javascript - Google Analytics 事件 + 电子商务跟踪 => 事件丢失

javascript - AngularJS错误: $interpolate:interr Interpolation Error with $routeParams

javascript - 跨浏览器和 IE 8 支持事件监听器

javascript - Jquery/JavaScript OnClick 事件未在移动设备上触发

javascript - 在哪里以MVC形式调用_gaq.push Google Analytics?

javascript - 用nodejs保存DateTime mysql

javascript - AngularJS:需要在弹出标题中显示 "Expired"

jquery - 将谷歌分析数据拉到我自己的管理面板