dale uso tanto al evento onmousedown como al evento onmouseup.
con el "mousedown" comienzas la acción de la función y con el mouseup la cancelas.
el error que tenias en tu código original y la razón por la que se pegaba es que se creaba un bucle infinito con el while,ya que, el evento queda igual siempre no había otra función que lo cancelase.
Ejemplo:
Código Javascript
:
Ver originalb = function() {
var bb, retardo = 200;
var overwriting = function(evt) {
if (evt.which == 3) {
//creo un intervalo en la variable bb
bb = setInterval(function() {
//Aqui me imagino que fijaste una funcion con el evento onkeydown y el evento onkeyup
window.onkeydown({
keyCode: 87
}); // KEY_W
window.onkeyup({
keyCode: 87
});
}, retardo);
}
};
//esta de abajo es la función que te había comentado la cual debías usas para cancelar la acción de la función anterior
var other = function(evt) {
if (evt.which == 3) {
clearInterval(bb)
}
}
window.addEventListener("mousedown", overwriting)
window.addEventListener("mouseup", other)
}
Saludos.