23/05/2013, 07:27
|
| Colaborador | | Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 16 años, 6 meses Puntos: 1012 | |
disasociar manejador evento ie8 el caso es que no soy capaz de eliminar el evento asociado. si prueban el código en cualquier navegador (excepto ie8), alertará Cita: en el primer click ---> 0
en el segundo ---> 1
en el tercer ----> 2
en el cuarto ---> 3
........ pero si lo prueban en ie8 Cita: en el primer click ---> 0
en el segundo ----> 1
en el tercer ----> 2 y después 3
en el cuarto ----> 4, 5, 6 y 7
........... aclaro que la función encargada de procesar el evento, ha de estar asociada a la variable
Código:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<script type="text/javascript">
var lib = {
Evento : function(elemento, nomevento, fnc) {
if (elemento.addEventListener) {
elemento.addEventListener(nomevento, fnc, false);
} else if (elemento.attachEvent) {
elemento.attachEvent('on' + nomevento, function() { fnc.call(elemento, window.event);});
}
},
EventoEliminar : function(elemento, nomevento, fnc) {
if (elemento.removeEventListener) {
elemento.removeEventListener(nomevento, fnc, false);
} else if (elemento.detachEvent) {
elemento.detachEvent('on' + nomevento, function() { fnc.call(elemento, window.event);});
}
},
obtenerEvento : function(event) {
return (event) ? event : window.event;
}
};
var i = 0, n;
function f() {
lib.Evento(document.querySelector('.liga'), 'click', n = function(event) {foo(event, i)});
}
function foo(e, ii) {
var evt = lib.obtenerEvento(e);
if (evt.preventDefault) {
evt.preventDefault();
evt.stopPropagation();
} else {
evt.returnValue = false;
evt.cancelBubble = true;
}
i++;
if (ii >= 1) {
lib.EventoEliminar(document.querySelector('.liga'), 'click', n);
lib.Evento(document.querySelector('.liga'), 'click', n = function(event) {foo(event, i)});
}
alert(ii);
}
window.onload = function() {f()};
</script>
</head>
<body>
<a class="liga" href="#">click aquí</a>
</body>
</html>
gracias |