2

私の Firefox 拡張機能では、ポップアップ メニューを動的に作成します。もともと、各メニュー項目で次の行を使用していました。

menuFunc.setAttribute("oncommand","MainExtension.MyPlugin." + functionName + "();");

functionNameそのメニュー項目に対して呼び出される関数の名前を含む文字列です。これはうまくいきました。拡張機能を Mozilla Addons ページにアップロードすると、自動化されたコード検証プログラムがこの行にフラグを立て、setAttribute を使用して oncommand を設定する方法は安全ではなく、代わりに addEventListener を使用する必要があると述べました。私はこの構文に切り替えました:

menuFunc.addEventListener("oncommand",function() {MainExtension.MyPlugin[functionName]},false);

メニュー項目をクリックしても何も起こりません。

私の構文はオフですか、それとも他に何か問題がありますか? 問題は一般的な「this」参照エラーではないと思います。関数の 1 つから「this」の使用をすべて削除しようとしましたが、それでも機能しませんでした。関数がまったく呼び出されていないようです。エラーも発生していません。

4

2 に答える 2

1

更新

commandアクションはcommand、 ではなくただ を使用してアタッチされますoncommand

menuFunc.addEventListener("command", MainExtension.MyPlugin[functionName], false);

あなたはただできるはずです:

menuFunc.oncommand = MainExtension.MyPlugin[functionName];
于 2012-10-22T12:19:52.117 に答える
0

推測:イベントをキャプチャするために、3 番目のパラメーターとしてのtrue代わりに使用するのに役立ちますか?false

于 2012-10-22T12:17:59.093 に答える