JS addevent binding analysis:
Function addevent (ELEM, eventname, Handler ){
If (ELEM. addeventlistener ){
ELEM. addeventlistener (eventname, handler, usercapture );
} Else if (ELEM. attachevent ){
ELEM. attachevent ("On" + eventname, Handler );
}
}; Firefox-> addeventlistener, third parameter
Usercapture
Usercapture If it is true, the browser uses the capture (capture) method. If it is false, the bubbing (bubble) method is used. False is recommended. When an event of an object is triggered Program It may be a large string. It may be a call to a function or a call to another function at the same time.
Document. getelementbyid ("BTN"). onclick = Method1;
Document. getelementbyid ("BTN"). onclick = method2;
Document. getelementbyid ("BTN"). onclick = method3;
If this is the case, only medhot3 will be executed.
In (IE) Using attachevent,
VaR btn1obj = Document. getelementbyid ("btn1 ");
// Object. attachevent (event, function );
Btn1obj. attachevent ("onclick", Method1 );
Btn1obj. attachevent ("onclick", method2 );
Btn1obj. attachevent ("onclick", method3 );
The execution sequence is method3-> method2-> Method1
Addeventlistener must be used in the Mozilla Series
VaR btn1obj = Document. getelementbyid ("btn1 ");
// Element. addeventlistener (type, listener, usecapture );
Btn1obj. addeventlistener ("click", Method1, false );
Btn1obj. addeventlistener ("click", method2, false );
Btn1obj. addeventlistener ("click", method3, false );
The execution sequence is Method1-> method2-> method3
Look at gmail'sCode
VaR Ka = navigator. useragent. tolowercase ();
VaR RT = ka. indexof ("Opera ")! =-1;
VaR r = ka. indexof ("MSIE ")! =-1 & (document. All &&! RT );
Function ZL (a, B, c) {If (r) {. attachevent ("On" + B, c)} else {. addeventlistener (B, c, false )}}