Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 检测函数在单击时运行_Javascript_Jquery_Angularjs - Fatal编程技术网

Javascript 检测函数在单击时运行

Javascript 检测函数在单击时运行,javascript,jquery,angularjs,Javascript,Jquery,Angularjs,我想在angular应用程序中通过创建与用户单击的按钮相关的功能日志来跟踪用户活动 我认为最好的方法是创建一个事件侦听器,它记录函数名和与单击的元素相关联的任何参数 我已经能够检索元素,但不确定如何获取函数名和参数 任何帮助都将不胜感激 这是我到目前为止的代码,如果我单击包含myFunction的按钮,我希望clickListener记录调用了myFunction,传入的参数是foo $scope.clickListener = function () { document.addEve

我想在angular应用程序中通过创建与用户单击的按钮相关的功能日志来跟踪用户活动

我认为最好的方法是创建一个事件侦听器,它记录函数名和与单击的元素相关联的任何参数

我已经能够检索元素,但不确定如何获取函数名和参数

任何帮助都将不胜感激

这是我到目前为止的代码,如果我单击包含myFunction的按钮,我希望clickListener记录调用了myFunction,传入的参数是foo

$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对了,希望我的问题的修改已经澄清了一些旧的东西;)为了得到更准确的结果,您可以使用这个正则表达式