Javascript 检测函数在单击时运行
我想在angular应用程序中通过创建与用户单击的按钮相关的功能日志来跟踪用户活动 我认为最好的方法是创建一个事件侦听器,它记录函数名和与单击的元素相关联的任何参数 我已经能够检索元素,但不确定如何获取函数名和参数 任何帮助都将不胜感激 这是我到目前为止的代码,如果我单击包含myFunction的按钮,我希望clickListener记录调用了myFunction,传入的参数是fooJavascript 检测函数在单击时运行,javascript,jquery,angularjs,Javascript,Jquery,Angularjs,我想在angular应用程序中通过创建与用户单击的按钮相关的功能日志来跟踪用户活动 我认为最好的方法是创建一个事件侦听器,它记录函数名和与单击的元素相关联的任何参数 我已经能够检索元素,但不确定如何获取函数名和参数 任何帮助都将不胜感激 这是我到目前为止的代码,如果我单击包含myFunction的按钮,我希望clickListener记录调用了myFunction,传入的参数是foo $scope.clickListener = function () { document.addEve
$scope.clickListener = function () {
document.addEventListener("click", function (event) {
console.log(event.target);
}, false);
};
$scope.myFunction = function (foo) {
//do stuff
}
您可以通过参数.callee.name
获取函数名。不用说,上面构造的参数
为您提供了传递的参数列表
$scope.clickListener = function () {
document.addEventListener("click", function myListener(event) {
console.log(event.target);
console.log(arguments.callee.name)
}, false);
};
为什么你不这么做:
var fun = event.target.getAtttibute("ng-click").split("(");
var name = fun[0];
var params = fun[1].split(",").pop();
您的意思是希望显示的事件监听器在这些事件发生时记录其他事件监听器的任何函数名吗?对不起,我想说得更清楚一些。刚刚又更新了一次
calee
应该是callee
。这里有一个拼写错误。而且,即使拼写是固定的,这不就是说console.log('myListener')
?它将只显示当前正在运行的函数的名称,您无论如何都知道。查看参数.callee.caller.name可能更有价值。问题是,匿名函数将返回'
@ChrisLear,我并不反对这一点。我只是在编辑一个错误。如果你觉得你有一个更好的答案,你应该贡献出来。我完全同意你的看法。如果我觉得我有一个更好的答案,我会贡献它。我没有更好的答案,但事实本身并不能让这个答案特别好。每次都只会记录“myListener”,我不相信OP想要的是这样。@ChrisLear对了,希望我的问题的修改已经澄清了一些旧的东西;)为了得到更准确的结果,您可以使用这个正则表达式