日期:2014-05-16  浏览次数:20283 次

通过什么方法可以获取某个dom元素上面都绑定了哪些事件
比如说<div id="main" onclick="whoami()"></div>中有个onclick绑定了whoami方法,我知道有id="main"这个元素,但是我不知道onclick或者onmouseover之类的(行为更表现是分离的),我要怎么获取这个元素绑定了些什么方法,通过什么绑定的。一时想到的这个问题,自己没有想到怎么做,希望高手指点下.谢谢!

------解决方案--------------------
列出事件和属性的方法,可以参考这个
http://blog.csdn.net/theforever/article/details/6029382
------解决方案--------------------
探讨

引用:

这个问题还是挺好的,有时会需要。

在不知道绑了什么时,定点去提,肯定是自相矛盾的。

那样的话,一般就是遍历了,可以举出一个目标对象的所有属性和方法,检测是否有值,并根据值的情况进行报告。

比如onclick这种事件,只有两种情形,一是onclick="javascript:直接写执行代码",二是onclick="javascript:thefor……

我是通过addEventlistener绑定的事件怎么去取呢?

------解决方案--------------------
HTML code
<script type="text/javascript">
function addEvent(dom,type,fn) {
    if(document.addEventListener) {
        dom.addEventListener(type, fn, false);
    } else if(document.attachEvent) {
        dom.attachEvent('on' + type, fn);
    } else {
        dom['on' + type] = fn;
    };
    dom["Listener-"+type]=!0;
}

function getDomEvent(o){
    var a="blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(' ');
    var b=[];
    for(var i=0;i<a.length;i++){
        if(o['on'+a[i]] || o["Listener-"+a[i]] || o.getAttribute('on'+a[i])){
            b.push(a[i]);
        };
    };

    return b;
};
function x(){
    alert('1')
}
window.onload=function(){
    var o=document.getElementById("test");
    o.onclick=function(){
        alert('1');
    };
    o.onblur=function(){
        alert('1');
    };
    addEvent(o,'mouseover',x);//使用这种方式去临听事件

    var b=getDomEvent(o);
    alert(b);//绑定的事件列表
}
</script>
<input type="text"  id="test" value="1"/>