detachEvent实例的全套实现掩饰

还是挺复杂的,概念也比较多

by kixi

HTML

<input id="a" type="button" value="点我" />
<input id="b" type="button" value="删除点我的事件" />

CSS

/*
清晰网
kixi.com.cn
从javascript开始
*/

JavaScript

//兼容addEventListener和attachEvent
function addEvent(elm, evType, fn, useCapture) {
    if (elm.addEventListener) {
        elm.addEventListener(evType, fn, useCapture); //DOM2.0
        return true;
    } else if (elm.attachEvent) {
        var r = elm.attachEvent('on' + evType, fn); //IE5+
        return r;
    } else {
        elm['on' + evType] = fn; //DOM 0
    }
}

//兼容removeEventListener和detachEvent
function rmvEvent(elm, evType, fn, useCapture) {
    if (elm.removeEventListener) {
        elm.removeEventListener(evType, fn, useCapture); //DOM2.0
        return true;
    } else if (elm.detachEvent) {
        var r = elm.detachEvent('on' + evType, fn); //IE5+
        return r;
    } else {
        elm['on' + evType] = null; //DOM 0
    }
}

function ok(){
    alert('清晰网,从javascript开始');
}


function add_event() {
    var a = document.getElementById("a")
    addEvent(a,"click", ok,false);
}

function delete_event() {
    var aa = document.getElementById("a");
    rmvEvent(aa,"click", ok,false);
}

//执行
add_event(); //运行添加事件函数
var b = document.getElementById('b');
addEvent(b,"click",delete_event,false);