我目前正在尝试做类似 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/