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

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

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

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

但是现在当我单击菜单项时什么也没有发生。

我的语法不正确或还有其他问题吗?我认为问题不在于常见的“ this”参考错误。我尝试从其中一个功能中删除对“ this”的所有使用,但仍然无法正常工作。似乎根本没有调用这些函数。也不产生错误。

最佳答案

更新:

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

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




您应该能够做到:

menuFunc.oncommand = MainExtension.MyPlugin[functionName];

09-25 18:04