位置:海鸟网 > IT > JavaScript >

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;

4.    return obj

5.}