在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];