私の Firefox 拡張機能では、ポップアップ メニューを動的に作成します。もともと、各メニュー項目で次の行を使用していました。
menuFunc.setAttribute("oncommand","MainExtension.MyPlugin." + functionName + "();");
functionName
そのメニュー項目に対して呼び出される関数の名前を含む文字列です。これはうまくいきました。拡張機能を Mozilla Addons ページにアップロードすると、自動化されたコード検証プログラムがこの行にフラグを立て、setAttribute を使用して oncommand を設定する方法は安全ではなく、代わりに addEventListener を使用する必要があると述べました。私はこの構文に切り替えました:
menuFunc.addEventListener("oncommand",function() {MainExtension.MyPlugin[functionName]},false);
メニュー項目をクリックしても何も起こりません。
私の構文はオフですか、それとも他に何か問題がありますか? 問題は一般的な「this」参照エラーではないと思います。関数の 1 つから「this」の使用をすべて削除しようとしましたが、それでも機能しませんでした。関数がまったく呼び出されていないようです。エラーも発生していません。