天天看點

javascript處理事件的一些相容寫法

綁定事件

​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; ​

繼續閱讀