0

我有一个生成动态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”)。

我还能如何为这些动态元素设置适当的命令处理程序?我知道这只是一个警告,但作为我这样的强迫症程序员,我想以最干净的方式做事。有一个更好的方法吗?

4

1 回答 1

2

好吧,您显然按照建议使用addEventListener()方法:

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

Function.bind()如果您还使用以下方法,或者稍微短一些:

tempMenuItem.addEventListener("command", myObject.someFunction.bind(myObject), false);
于 2012-11-14T06:51:02.940 回答