在我的 Firefox 扩展中,我动态地创建了一个弹出菜单。最初,我在每个菜单项上都使用了这一行:
menuFunc.setAttribute("oncommand","MainExtension.MyPlugin." + functionName + "();");
wherefunctionName
是一个字符串,其中包含要为该菜单项调用的函数的名称。这工作得很好。当我将我的扩展上传到 Mozilla Addons 页面时,自动代码验证程序标记了这一行,并说使用 setAttribute 以这种方式设置 oncommand 是不安全的,应该使用 addEventListener 代替。我切换到这种语法:
menuFunc.addEventListener("oncommand",function() {MainExtension.MyPlugin[functionName]},false);
但是现在当我单击菜单项时什么也没有发生。
是我的语法关闭还是有其他问题?我不认为问题是常见的“this”引用错误。我尝试从其中一个函数中删除“this”的所有用法,但它仍然不起作用。似乎根本没有调用这些函数。也没有产生错误。