Javascript 如何将函数(侦听器)传递给addeventlistener

Javascript 如何将函数(侦听器)传递给addeventlistener,javascript,dynamic,addeventlistener,Javascript,Dynamic,Addeventlistener,我有一个可重用的模块,它为我们的站点创建了一个顶层表单。它支持的特性之一是允许其他开发人员向其页面添加事件处理程序 我正在重组它,因为我们的网站充满了内联脚本,不会通过新的安全要求 开发人员给了我一个如下所示的参数: addEvents=“'onClick=testEvent2()” 我有一段代码来解释这个: // event converter var map = new Object(); map["onLoad"] = "load"; map[&qu

我有一个可重用的模块,它为我们的站点创建了一个顶层表单。它支持的特性之一是允许其他开发人员向其页面添加事件处理程序

我正在重组它,因为我们的网站充满了内联脚本,不会通过新的安全要求

开发人员给了我一个如下所示的参数: addEvents=“'onClick=testEvent2()”

我有一段代码来解释这个:

// event converter
var map = new Object();
map["onLoad"] = "load";
map["onKeyUp"] = "keyUp";
map["onClick"] = "click";

var myEvents = [#Attributes.addEvents#];
function iterate(item) {
    thisEvent = item.split("=");
    document.getElementById("fluid").addEventListener(map[thisEvent[0]], event => {thisEvent[1];});
}
myEvents.forEach(iterate);

function testEvent(){
    alert("hi mom");
}
function testEvent2(){
    alert("stop touching me!");
}
散列符号之间的位是文字onClick=testEvent2()。(这是一个coldFusion模板) 我想在这里发生的是,当用户点击页面上的任何地方时,他们会收到一个警告,上面写着“停止触摸我”

(显然,这只是一个我用来解决如何做到这一点的胡说八道的处理程序!)

嗯。。。什么也没发生。如果我将变量thisEvent[1]替换为它所包含的文本testEvent2(),那么它将按预期工作


我需要做什么才能传递对该函数的引用?

我尝试了这个方法,但它会引发与“eval”相同的冲突,因此我不能使用它函数iterate(item){thisEvent=item.split(“”);document.getElementById(“流体”).addEventListener(map[thisEvent[0]],event=>{运行码(thisEvent[1]。子字符串(0,thisEvent[1])[1] .length-2];});}myEvents.forEach(迭代);函数运行码(fn){var func=new函数(fn);func();}