2

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

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

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

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

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

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

4

2 回答 2

1

更新

command动作是使用 just 附加的command,而不是oncommand

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

你应该能够做到:

menuFunc.oncommand = MainExtension.MyPlugin[functionName];
于 2012-10-22T12:19:52.117 回答
0

只是一个猜测:使用true而不是false作为第三个参数来捕获事件是否有帮助?

于 2012-10-22T12:17:59.093 回答