martes, 15 de septiembre de 2009

Funciones de evento para componentes

Para crear funciones que lancen eventos tal y como ocurre con la función click de IE para todos los navegadores basta con hacer lo siguiente (ejemplo con mouseover sobre un anchor con id 'anchor'):
if(typeof HTMLElement!='undefined'&&!HTMLElement.prototype.mouseover){
document.getElementById('anchor').mouseover=function(){
var evt = this.ownerDocument.createEvent('MouseEvents');
evt.initMouseEvent('mouseover', true, true, this.ownerDocument.defaultView, 1, 0, 0, 0, 0, false, false, false, false, 0, null);
this.dispatchEvent(evt);
}
}
else{
document.getElementById('anchor').mouseover = function(){
this.fireEvent('onmouseover');
}
}

Si se quiere alterar el prototype para navegadores non-IE, basta con hacer HTMLElement.prototype.mouseover=function(){. Esto lanzaría eventos de moudeover sobre cualquier elemento invocando la función mouseover() sobre él.
Nota: En caso del iexplorer, los valores de posición son correctos, pero no así en el resto, que serán cero.

No hay comentarios: