buenas,
no te funciona ‒ y me extraña que te funcione en iexplorer ‒ porque estás usando un modelo propio de iexplorer. no es por eso que me extrañe que te funcione en iexplorer, sino porque tienes esta línea
if(!document.all) return, que significa
si no existe document.all, salir de la función. por tanto, en iexplorer y chrome (desgraciadamente) existe dicho objeto. sobre el modelo me refiero al de eventos. iexplorer crea el objeto event en el ambito global mientras que chrome parece que define la variable pero la deja undefined. chrome usa el modelo estándar, el cual consiste en que el handler recibe el objeto event cuando el evento se inicia. además, las propiedades tienen diferentes nombres.
Código:
function handler(evt){
console.log(evt.target);
}
<span onclick="handler(event);">click y revisa consola</span>