justo lo que ya venia diciendo. produce error type mismatch porque esta utilizando un string para remover el evento. no le veo el uso de generar un string a base de la funcion. el siguiente codigo es una modificacion funcional.
Código javascript
:
Ver original<script type="text/javascript"><!--
function $(id){return document.getElementById(id);}
function alertar(){
alert('Si!');
}
function detener(){
removeEvent.call($('prueba'),'click',alertar);
}
var addEvent=function(type, fn ) {
if ( this.addEventListener ) {
this.addEventListener( type, fn, false );
} else if(this.attachEvent){
var _this = this;
this.attachEvent('on'+type, fn);
}else{
this['on'+type]=fn;
}
};
var removeEvent = function(evType,fn){
if(this.removeEventListener){
this.removeEventListener(evType, fn, false);
}else if(this.detachEvent){
this.detachEvent("on"+evType, fn);
}else{
this['on'+evType]=null;
}
};
onload=function(){
addEvent.call($('prueba'),'click',alertar);
addEvent.call($('prueba'),'mouseout',detener);
};
-->
</script>
<div id="prueba" style="background-color:#CCCCCC; width:50px; height:50px;">Click!</div>