Colleagues often ask me how to get events in Firefox. Most of them want to get the function of event.keyCode. There are two methods
The first method:
function a(e){
e=e||window.event;
alert(e.keyCode);
}
ie browser calls as follows
firefox calls the following
In this way, the call can be successful
This method requires a parameter in Firefox, which is not very good. Here is the second method
The second method:
function a(){
e=arguments.callee.caller.arguments[0 ] || window.event;
alert(e.keyCode);
}
Both ie and firefox call it as follows
Here is an explanation arguments.callee.caller.arguments[0],
A simple example is as follows:
function a(){
b();
}
function b(){
alert(b === arguments.callee)
alert(b. caller === a)
alert(arguments.callee.caller === a)
}
a();
The above example will output 3 trues , indicating the relationship between function b and function a when a() is called.
arguments.callee refers to the current function body
arguments.callee.caller is the superior function of the current function
So when onclick="a()" is executed, arguments.callee is a(), arguments .callee.caller is function onclick
The first function of onclick is event, which is arguments.callee.caller.arguments[0].