同僚からよく Firefox でイベントを取得する方法を尋ねられます。ほとんどの場合、event.keyCode の関数を取得したいと考えています。
最初の方法:
function a(e){
e=e||window.event;
alert(e.keyCode);
}
ブラウザは次のように呼び出します
Firefox は次の
>
このようにして、呼び出しは成功します
このメソッドには Firefox のパラメータが必要ですが、これはあまり良くありません。
2 番目のメソッド
。 : function a(){
e=arguments.callee.caller.arguments[0 ] || window.event;
alert(e.keyCode)
}
ie と Firefox はどちらも次のように呼び出します。 🎜>
説明は次のとおりです argument.callee.caller.arguments[0],
簡単な例は次のとおりです:
function a(){
b();
function b() {
alert(b === argument.callee)
alert(b.caller === a)
alert(arguments.callee.caller === a)
}
a ();
上記の例は、 a() が呼び出されたときに関数 b と関数 a の関係を示す 3 つの true を出力します。
arguments.callee は現在の関数本体を参照します
arguments.callee.caller は現在の関数の上位関数です
したがって、onclick="a()" が実行されると、arguments.callee は a() になります、引数 .callee.caller は関数 onclick
onclick の最初の関数はevent、つまりarguments.callee.caller.arguments[0]です。