Muchisimas gracias por tu ayuda.
No sabía de la existencia de este método, o almenos no me acordaba yo...
Puse lo siguiente y se ha solucionado:
var e=window.event||arguments.callee.caller.arguments[0];
e.cancelBubble=true;
if (e.stopPropagation) e.stopPropagation();
P.D. acabo de ver que en IE no tira... voy a investigar....
Y aquí la solución, como tu bien decias, con preventDefault:
var e=window.event||arguments.callee.caller.arguments[0];
e.cancelBubble = true;
e.returnValue = false;
if (e.stopPropagation) e.stopPropagation();
if (e.preventDefault) e.preventDefault();