No encuentro la forma de evitar que se me llene la pila de registro de eventos del tipo MouseOver, he intentado remover esos eventos con MouseOut pero no lo logro
Si ven en el este script que he escrito, si se pasa muchas veces por encima del caminante este acelera su paso debido a la clonacion de la funcion moveMeHor()
Código Javascript:
Ver original
<html> <head> <title>No molestar!</title> <style> body {background-color: #000;} h1 {color: white;} #moverDiv { width:350px; height:350px; background-image: url("http://oi54.tinypic.com/28k3pjo.jpg"); border: red 2px; position:relative; } </style> </head> <body> <h1> No me molestes </h1> <div id = "moverDiv"></div> <script> // @author: Pablo Bozzolo function moveMeHor(elem,cant,smooth) { smooth = smooth || false; elem.removeEventListener('mouseover',miHandler,false); if (!smooth){ elem.style.left = cant; return; } (function(){ i = 0; inter = setInterval(function() { if (i>cant) { i=0; } if (i==cant) { clearInterval(inter); div.addEventListener ('mouseover',miHandler,false); } elem.style.left = i; i++; },1); })(); } window.onload = function() { div = document.getElementById('moverDiv'); miHandler = function(){moveMeHor(div,500,true);}; miHandler2 = function(){console.log('removiendo handler1'); div.removeEventListener('mouseover',miHandler,false);}; // espero un tiempito segundo antes de registrar el mouseover setInterval(function(){ div.addEventListener ('mouseover',miHandler,false); div.addEventListener ('mouseout',miHandler2,false); },500); } </script> </body> </html>
Graciass!