How can i check if a JavaScript-Eventhandler has been set?

前端 未结 3 1875
别跟我提以往
别跟我提以往 2020-12-14 18:54

I\'ve got a JavaScript-function that sets the \"onclick\"-event of some HTML-Nodes - even if that \"onclick\"-event has been set before.

How can i check if that ev

相关标签:
3条回答
  • 2020-12-14 19:32

    It should be possible to detect event handlers attached using <element>.addEventListener() by intercepting calls to the function:

    var myListOfAddedEvents = [];
    
    var realAddEventListener = HTMLElement.prototype.addEventListener;
    
    HTMLElement.prototype.addEventListener = function(evtType,fn,cap) {
        myListOfAddedEvents.push(
            {on: this, type: evtType, handler: fn, capture: cap}
        );
    
        return realAddEventListener.apply(this, arguments);
    };
    

    Note: That is untested code and may need some work. I'm hoping this same function will be used by all element types, but I could be wrong. Also it will only work if you can run this bit of code before they start adding events. A copy for attachEvent could be constructed similarly.

    0 讨论(0)
  • 2020-12-14 19:36

    Check, like this:

    if(typeof someNode.onclick == "function") {
       // someNode has an event handler already set for the onclick event...
    }
    

    By the way, if you are using a library, you should say so - if you are, it might be easier/cleaner and would differ based on which library you are using...

    0 讨论(0)
  • 2020-12-14 19:38
    <input type="button" id="foo" name="foo" value="bar" />
    
    <script type="text/javascript">
        alert(document.getElementById('foo').onclick); //undefined
    </script>
    

    So what you want to do is something like this:

    <script type="text/javascript">
        if (undefined == document.getElementById('foo').onclick)
        {
            // Add event handler
        }
    </script>
    
    0 讨论(0)
提交回复
热议问题