Skip to content

Instantly share code, notes, and snippets.

@obenjiro
Last active December 22, 2015 21:09
Show Gist options
  • Save obenjiro/6530847 to your computer and use it in GitHub Desktop.
Save obenjiro/6530847 to your computer and use it in GitHub Desktop.
Gist that allows you to get all possible events for IE9+, Chrome, Safari and FF.
//long version
function getAllEvents() {
return Object.getOwnPropertyNames(document)
.concat(Object.getOwnPropertyNames(Object.getPrototypeOf(Object.getPrototypeOf(document))))
.concat(Object.getOwnPropertyNames(Object.getPrototypeOf(window)))
.filter(function(i){return !i.indexOf('on')&&(document[i]==null||document[i].call)})
.filter(function(elem, pos, self){return self.indexOf(elem) == pos})
}
//short, one line version (262 chars)
function getAllEvents(w,f,u,d){w=Object.getOwnPropertyNames,f=Object.getPrototypeOf,d=document;return w(d).concat(w(f(f(d)))).concat(w(f(window))).filter(function(i){return !i.indexOf('on')&&(d[i]==u||d[i].call)}).filter(function(e,p,s){return s.indexOf(e)==p})}
// the result is an array
//
// ["onwebkitpointerlockerror", "onwebkitpointerlockchange", "onwebkitfullscreenerror", "onwebkitfullscreenchange",
// "onselectionchange", "onselectstart", "onsearch", "onreset", "onpaste", "onbeforepaste", "oncopy", "onbeforecopy",
// "oncut", "onbeforecut", "onsubmit", "onselect", "onscroll", "onreadystatechange", "onmousewheel", "onmouseup",
// "onmouseover", "onmouseout", "onmousemove", "onmousedown", "onload", "onkeyup", "onkeypress", "onkeydown", "oninvalid",
// "oninput", "onfocus", "onerror", "ondrop", "ondragstart", "ondragover", "ondragleave", "ondragenter", "ondragend",
// "ondrag", "ondblclick", "oncontextmenu", "onclick", "onchange", "onblur", "onabort", "ondeviceorientation",
// "ontransitionend", "onwebkittransitionend", "onwebkitanimationstart", "onwebkitanimationiteration",
// "onwebkitanimationend", "onwaiting", "onvolumechange", "onunload", "ontimeupdate", "onsuspend", "onstorage",
// "onstalled", "onseeking", "onseeked", "onresize", "onratechange", "onprogress", "onpopstate", "onplaying",
// "onplay", "onpause", "onpageshow", "onpagehide", "ononline", "onoffline", "onmessage", "onloadstart",
// "onloadedmetadata", "onloadeddata", "onhashchange", "onended", "onemptied", "ondurationchange", "oncanplaythrough",
// "oncanplay", "onbeforeunload"]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment