在我的Firefox扩展程序中,我动态创建一个弹出菜单。最初,我在每个菜单项上使用了这一行:
menuFunc.setAttribute("oncommand","MainExtension.MyPlugin." + functionName + "();");
其中functionName
是一个字符串,其中包含要为该菜单项调用的函数的名称。这很好。当我将我的扩展上传到Mozilla Addons页面时,自动代码验证程序标记了这一行,并说使用setAttribute以这种方式设置oncommand是不安全的,而应该使用addEventListener。我切换到这个语法:
menuFunc.addEventListener("oncommand",function() {MainExtension.MyPlugin[functionName]},false);
但是现在点击菜单项时没有任何反应。
我的语法是关闭还是有其他错误?我不认为问题是常见的'this'引用错误。我尝试从其中一个函数中删除'this'的所有用法,但它仍然无法正常工作。似乎根本没有调用函数。也没有产生任何错误。
答案 0 :(得分:1)
<强>更新强>:
仅使用command
而不是command
附加oncommand
操作:
menuFunc.addEventListener("command", MainExtension.MyPlugin[functionName], false);
你应该能够做到:
menuFunc.oncommand = MainExtension.MyPlugin[functionName];
答案 1 :(得分:0)
猜测:为了捕获事件,使用true
代替false
作为第三个参数会有帮助吗?