addEventListener in Internet Explorer

后端 未结 8 2151
感情败类
感情败类 2020-11-22 14:33

What is the equivalent to the Element Object in Internet Explorer 9?

if (!Element.prototype.addEventListener) {
    Element.prototype.addEventListener = func         


        
8条回答
  •  臣服心动
    2020-11-22 14:52

    EDIT

    I wrote a snippet that emulate the EventListener interface and the ie8 one, is callable even on plain objects: https://github.com/antcolag/iEventListener/blob/master/iEventListener.js

    OLD ANSWER

    this is a way for emulate addEventListener or attachEvent on browsers that don't support one of those
    hope will help

    (function (w,d) {  // 
        var
            nc  = "", nu    = "", nr    = "", t,
            a   = "addEventListener",
            n   = a in w,
            c   = (nc = "Event")+(n?(nc+= "", "Listener") : (nc+="Listener","") ),
            u   = n?(nu = "attach", "add"):(nu = "add","attach"),
            r   = n?(nr = "detach","remove"):(nr = "remove","detach")
    /*
     * the evtf function, when invoked, return "attach" or "detach" "Event" functions if we are on a new browser, otherwise add "add" or "remove" "EventListener"
     */
        function evtf(whoe){return function(evnt,func,capt){return this[whoe]((n?((t = evnt.split("on"))[1] || t[0]) : ("on"+evnt)),func, (!n && capt? (whoe.indexOf("detach") < 0 ? this.setCapture() : this.removeCapture() ) : capt  ))}}
        w[nu + nc] = Element.prototype[nu + nc] = document[nu + nc] = evtf(u+c) // (add | attach)Event[Listener]
        w[nr + nc] = Element.prototype[nr + nc] = document[nr + nc] = evtf(r+c) // (remove | detach)Event[Listener]
    
    })(window, document)
    

提交回复
热议问题