2012-11-14 53 views
0

我有一個工具欄擴展,生成動態toolbarbuttonmenuitem元素。這些項目通常由這樣的:如何正確設置動態XUL元素的事件?

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

此代碼工作得很好,但我得到以下警告,當我提出我的分機官方附加庫:

上*屬性是設置使用的setAttribute

警告:爲了避免漏洞,事件處理程序(如「的onclick」和「onHover選項」)應始終使用addEventListener定義。

我還可以如何爲這些動態元素設置適當的命令處理程序?我知道這只是一個警告,但作爲我這個強迫性的程序員,我想盡可能以最乾淨的方式做事。有一個更好的方法嗎?

回答

2

嘛,你明明使用addEventListener() method作爲建議說:

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

或者稍短,如果您還使用了Function.bind() method

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

謝謝!我不清楚事件監聽器如何應用於動態元素,但您的示例非常合理。 –