我有一个工具栏扩展程序,可以生成动态的toolbarbutton
和menuitem
元素。这些项目通常是这样构造的:
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);