我有一个工具栏扩展程序,可以生成动态的toolbarbuttonmenuitem元素。这些项目通常是这样构造的:

tempMenuItem = document.createElement("menuitem");
tempMenuItem.setAttribute("label",  "Some Label");
tempMenuItem.setAttribute("tooltiptext", "Some Tooltip");
tempMenuItem.setAttribute("oncommand", "myObject.someFunction()");


这段代码很好用,但是当我将扩展名提交到官方附加存储库时,我得到以下警告:


  使用setAttribute设置on *属性
  
  警告:为防止漏洞,应始终使用addEventListener定义事件处理程序(如“ onclick”和“ onhover”)。


我还能如何为这些动态元素设置适当的命令处理程序?我知道这只是一个警告,但是作为我自己的强迫性程序员,我想以最简洁的方式进行操作。有一个更好的方法吗?

最佳答案

好吧,您显然使用addEventListener() method作为建议:

tempMenuItem.addEventListener("command", function(event)
{
  myObject.someFunction();
}, false);


或者如果您还使用Function.bind() method则稍短一些:

tempMenuItem.addEventListener("command", myObject.someFunction.bind(myObject), false);

10-06 01:22