Skip to content

Instantly share code, notes, and snippets.

@chriswrightdesign
Created November 20, 2013 23:47
Show Gist options
  • Save chriswrightdesign/7573368 to your computer and use it in GitHub Desktop.
Save chriswrightdesign/7573368 to your computer and use it in GitHub Desktop.

Revisions

  1. chriswrightdesign created this gist Nov 20, 2013.
    71 changes: 71 additions & 0 deletions ie8Events.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,71 @@
    (function() {
    if (!Event.prototype.preventDefault) {
    Event.prototype.preventDefault=function() {
    this.returnValue=false;
    };
    }
    if (!Event.prototype.stopPropagation) {
    Event.prototype.stopPropagation=function() {
    this.cancelBubble=true;
    };
    }
    if (!Element.prototype.addEventListener) {
    var eventListeners=[];

    var addEventListener=function(type,listener /*, useCapture (will be ignored) */) {
    var self=this;
    var wrapper=function(e) {
    e.target=e.srcElement;
    e.currentTarget=self;
    if (listener.handleEvent) {
    listener.handleEvent(e);
    } else {
    listener.call(self,e);
    }
    };
    if (type=="DOMContentLoaded") {
    var wrapper2=function(e) {
    if (document.readyState=="complete") {
    wrapper(e);
    }
    };
    document.attachEvent("onreadystatechange",wrapper2);
    eventListeners.push({object:this,type:type,listener:listener,wrapper:wrapper2});

    if (document.readyState=="complete") {
    var e=new Event();
    e.srcElement=window;
    wrapper2(e);
    }
    } else {
    this.attachEvent("on"+type,wrapper);
    eventListeners.push({object:this,type:type,listener:listener,wrapper:wrapper});
    }
    };
    var removeEventListener=function(type,listener /*, useCapture (will be ignored) */) {
    var counter=0;
    while (counter<eventListeners.length) {
    var eventListener=eventListeners[counter];
    if (eventListener.object==this && eventListener.type==type && eventListener.listener==listener) {
    if (type=="DOMContentLoaded") {
    this.detachEvent("onreadystatechange",eventListener.wrapper);
    } else {
    this.detachEvent("on"+type,eventListener.wrapper);
    }
    break;
    }
    ++counter;
    }
    };
    Element.prototype.addEventListener=addEventListener;
    Element.prototype.removeEventListener=removeEventListener;
    if (HTMLDocument) {
    HTMLDocument.prototype.addEventListener=addEventListener;
    HTMLDocument.prototype.removeEventListener=removeEventListener;
    }
    if (Window) {
    Window.prototype.addEventListener=addEventListener;
    Window.prototype.removeEventListener=removeEventListener;
    }
    }
    })();