带有变量函数名的addEventListener语法

时间:2012-10-22 11:45:17

标签: javascript firefox-addon addeventlistener

在我的Firefox扩展程序中,我动态创建一个弹出菜单。最初,我在每个菜单项上使用了这一行:

menuFunc.setAttribute("oncommand","MainExtension.MyPlugin." + functionName + "();");

其中functionName是一个字符串,其中包含要为该菜单项调用的函数的名称。这很好。当我将我的扩展上传到Mozilla Addons页面时,自动代码验证程序标记了这一行,并说使用setAttribute以这种方式设置oncommand是不安全的,而应该使用addEventListener。我切换到这个语法:

menuFunc.addEventListener("oncommand",function() {MainExtension.MyPlugin[functionName]},false);

但是现在点击菜单项时没有任何反应。

我的语法是关闭还是有其他错误?我不认为问题是常见的'this'引用错误。我尝试从其中一个函数中删除'this'的所有用法,但它仍然无法正常工作。似乎根本没有调用函数。也没有产生任何错误。

2 个答案:

答案 0 :(得分:1)

<强>更新

仅使用command而不是command附加oncommand操作:

menuFunc.addEventListener("command", MainExtension.MyPlugin[functionName], false);

你应该能够做到:

menuFunc.oncommand = MainExtension.MyPlugin[functionName];

答案 1 :(得分:0)

猜测:为了捕获事件,使用true代替false作为第三个参数会有帮助吗?