0

動的要素toolbarbuttonmenuitem要素を生成するツールバー拡張機能があります。これらのアイテムは通常、次のように構成されます。

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

このコードは問題なく機能しますが、拡張機能を公式のアドオンリポジトリに送信すると、次の警告が表示されます。

setAttributeを使用して設定されているon*属性

警告:脆弱性を防ぐために、イベントハンドラー(「onclick」や「onhover」など)は常にaddEventListenerを使用して定義する必要があります。

これらの動的要素に適切なコマンドハンドラーを設定するには、他にどのようにすればよいですか?私はこれが単なる警告であることを知っていますが、私は強迫神経症のプログラマーなので、可能な限りクリーンな方法で物事をやりたいと思っています。これを行うためのより良い方法はありますか?

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 に答える