绑定事件




​01.​​​​var​​ ​​addEvent = ​​​​function​​​​( obj, type, fn ) { ​


​02.​​​​if​​ ​​(obj.addEventListener) ​


​03.​​​​obj.addEventListener( type, fn, ​​​​false​​ ​​); ​


​04.​​​​else​​ ​​if​​ ​​(obj.attachEvent) { ​


​05.​​​​obj[​​​​"e"​​​​+type+fn] = fn; ​


​06.​​​​obj.attachEvent( ​​​​"on"​​​​+type, ​​​​function​​​​() { ​


​07.​​​​obj[​​​​"e"​​​​+type+fn](); ​


​08.​​​​} ); ​


​09.​​​​} ​


​10.​​​​};​


另一个实现




​01.​​​​var​​ ​​addEvent = (​​​​function​​ ​​() {  ​


​02.​​​​if​​ ​​(document.addEventListener) {  ​


​03.​​​​return​​ ​​function​​ ​​(el, type, fn) {  ​


​04.​​​​el.addEventListener(type, fn, ​​​​false​​​​);  ​


​05.​​​​};  ​


​06.​​​​} ​​​​else​​ ​​{  ​


​07.​​​​return​​ ​​function​​ ​​(el, type, fn) {  ​


​08.​​​​el.attachEvent(​​​​'on'​​ ​​+ type, ​​​​function​​ ​​() {  ​


​09.​​​​return​​ ​​fn.call(el, window.event);  ​


​10.​​​​});  ​


​11.​​​​}  ​


​12.​​​​}  ​


​13.​​​​})();​


移除事件




​1.​​​​var​​ ​​removeEvent = ​​​​function​​​​(obj, type, fn) { ​


​2.​​​​if​​ ​​(obj.removeEventListener) ​


​3.​​​​obj.removeEventListener( type, fn, ​​​​false​​ ​​); ​


​4.​​​​else​​ ​​if​​ ​​(obj.detachEvent) { ​


​5.​​​​obj.detachEvent( ​​​​"on"​​​​+type, obj[​​​​"e"​​​​+type+fn] ); ​


​6.​​​​obj[​​​​"e"​​​​+type+fn] = ​​​​null​​​​; ​


​7.​​​​} ​


​8.​​​​}​


加载事件与脚本




​01.​​​​var​​ ​​loadEvent = ​​​​function​​​​(func) { ​


​02.​​​​var​​ ​​oldonload = window.onload; ​


​03.​​​​if​​ ​​(​​​​typeof​​ ​​window.onload != ​​​​'function'​​​​) { ​


​04.​​​​window.onload = func; ​


​05.​​​​}​​​​else​​ ​​{ ​


​06.​​​​window.onload = ​​​​function​​​​() { ​


​07.​​​​oldonload(); ​


​08.​​​​func(); ​


​09.​​​​} ​


​10.​​​​} ​


​11.​​​​}​


阻止事件




​01.​​​​var​​ ​​cancelEvent = ​​​​function​​​​(event) { ​


​02.​​​​event = event||window.event ​


​03.​​​​if​​ ​​(event.preventDefault) { ​


​04.​​​​event.preventDefault(  ); ​


​05.​​​​event.stopPropagation(  ); ​


​06.​​​​} ​​​​else​​ ​​{ ​


​07.​​​​event.returnValue = ​​​​false​​​​; ​


​08.​​​​event.cancelBubble = ​​​​true​​​​; ​


​09.​​​​} ​


​10.​​​​}​


取得事件源对象

相当于Prototype.js框架的Event.element(e)




​1.​​​​var​​ ​​getTarget = ​​​​function​​​​(event){ ​


​2.​​​​event = event || window.event; ​


​3.​​​​var​​ ​​obj = event.srcElement ? event.srcElement : event.target; ​


​4.​​​​return​​ ​​obj ​