Created
July 18, 2018 15:53
-
-
Save herdianf/c49fe6621063ebd384cbca726f286fab to your computer and use it in GitHub Desktop.
JS Add Event
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//from here | |
//https://stackoverflow.com/questions/10149963/adding-event-listener-cross-browser | |
//by https://stackoverflow.com/users/816620/jfriend00 | |
//with some mods | |
// add event cross browser | |
function addEvent(elem, event, fn) { | |
// avoid memory overhead of new anonymous functions for every event handler that's installed | |
// by using local functions | |
function listenHandler(e) { | |
var ret = fn.apply(this, arguments); | |
if (ret === false) { | |
e.stopPropagation(); | |
e.preventDefault(); | |
} | |
return(ret); | |
} | |
function attachHandler() { | |
// set the this pointer same as addEventListener when fn is called | |
// and make sure the event is passed to the fn also so that works the same too | |
var ret = fn.call(elem, window.event); | |
if (ret === false) { | |
window.event.returnValue = false; | |
window.event.cancelBubble = true; | |
} | |
return(ret); | |
} | |
if (elem.addEventListener) { | |
elem.addEventListener(event, listenHandler, false); | |
return {elem: elem, handler: listenHandler, event: event}; | |
} else { | |
elem.attachEvent("on" + event, attachHandler); | |
return {elem: elem, handler: attachHandler, event: event}; | |
} | |
} | |
function removeEvent(token) { | |
if (token.elem.removeEventListener) { | |
token.elem.removeEventListener(token.event, token.handler); | |
} else { | |
token.elem.detachEvent("on" + token.event, token.handler); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment