The easiest way around the prefix shenanigans is to call addEventListener for all prefixed and non-prefixed names using a custom function: var pfx = ["webkit", "moz", "MS", "o", ""]; function PrefixedEvent(element, type, callback) { for (var p = 0; p < pfx.length; p++) { if (!pfx[p]) type = type.toLowerCase(); element.addEventListener(pfx[p]+type, callback, false); } }>code> Cross-browser event ha