Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Javascript (http://www.forosdelweb.com/f13/)
-   -   Interrumpir eventos (http://www.forosdelweb.com/f13/interrumpir-eventos-584496/)

Calisco 08/05/2008 20:26

Interrumpir eventos
 
Sin lugar a dudas tengo muchas materias pendientes con JS; los eventos es la más importante.
Realmente no se como puedo evitar que el motor deje de llamar a funciones que previamente yo había definido que se ejecuten en un evento determinado.
Estoy trabajando con mooTools ... pero seguro que con muy poco lo trasladamos a JS puro (puristas abstener las risas ... y mas si tienen más de 10000 post :molesto:).
En esta página http://www.xifox.net he definido tres eventos pos cada ventanita inferior: mouseenter (que es como mouseover), mouseleave (que es como mouseout) y mousedown.
Al hacer hover cambia la transparencia de la ventana.
Todo bien hasta ahí.
Ahora ... , cuando hago mousedown empiezo una animación de desplazamiento de las ventanas (left: x) que deberían terminar encimándose; el problema es que en la transición se vuelven a producir mouseenter y/o mouseleave en algunas de estas y me detiene la transición.
Simple pregunta:
Cómo puedo eliminar, momentáneamente y a mi antojo, estos eventos, ya sea en los elementos de las ventanas, o en todo el browser ?
No se si se entiende ...

Saludos, y gracias.

PD: recibo críticas del diseño, recién empiezo. :-D

venedan 08/05/2008 22:16

Re: Interrumpir eventos
 
Cita:

Iniciado por Calisco (Mensaje 2396541)
No se si se entiende ...

yo de verdad no entendi ah y por cierto el diseño se ve bien

jahepi 08/05/2008 22:28

Re: Interrumpir eventos
 
Hola Calisco !

No estoy muy familiarizado con el framework mootools, pero en su página podrías consultar la documentación relacionada con el manejo de eventos.

Saludos ! :adios:

Calisco 09/05/2008 04:38

Re: Interrumpir eventos
 
Ya la consulté ... saludos y gracias.

caricatos 09/05/2008 04:41

Re: Interrumpir eventos
 
Hola Calisco:

Me parece que estoy en ese grupo del que pides abstinencia :neurotico, aunque tal vez comentándote mi experiencia (que dicen que es la madre de las ciencias) te pueda ayudar algo...

La verdad es que los eventos no se pueden deshabilitar, pero sí puede programarse un comportamiento distinto para distintas ocasiones... por ejemplo, si en tu manejador del evento la trancisión está temporizada (setTimeout/setInterval), puedes hacer una cancelación de esa temporización desde otro evento:

onmouseover="transito = true; transitar(this.id, 0)"
onmouseout="transito=false"

function transitar(elemento, estado) {
if (transito || estado < 100) {
opacar(elemento, ++estado);
setTimeout("transitar('" + elemento + "', " + estado);
}
}

Como se ve la función se ejecuta con 2 condicionamientos.

... y no seas gruñón. :risa:

Saludos :arriba:

Calisco 09/05/2008 04:58

Re: Interrumpir eventos
 
Ok, está bien, si no entiendo mal lo que me dices es que de alguna manera yo puedo ejecutar o no el código de una función que es invocada por el explorador en cierto evento a través, en este caso, del valor de una variable ?. Si es así, no es lo que estoy intentando saber.

Empecemos de nuevo de cero.

Tengo un Elemento HTML
Código HTML:

<div id="miNodoHTML">HOA !</div>
Y en JS tengo la referencia DOM a ese elemento en una variable
Código PHP:

var miNodo = $('miNodoHTML');
// No uso getElementById, tuve que entrar a google para que me sugiriera el nombre correcto ! ;-) 

Ahora quiero definirle un comportamiento particualr a ese elemento cuando paso por encima el puntero del mouse.
Código PHP:

miNodo.AddEvent ('mouseenter', function (ev) {
    
alert ('No uso console.log ... pero esta 100 veces mejor !'); 

A diferencia de las funciones normales, esta función no es invocada a mi antojo, si no que mi amigo el browser la llama justamente cuando hacemos mouseenter por sobre el área del elemtno HTML.

Teniendo esto claro ... ahora yo pregunto ... Puedo eliminar momentáneamente la ejecución de esa función previamente definida para el evento mouseleave ... y volver a habilitarla cuando yo quiera ?
Más allá de ser obstinado, he visto algunos métodos que supuestamente harían esa tarea, por ejemplo en mootools, existe removeEvent() y removeEvents(); pero no me funcionan como esperase.

Saludos y gracias.
PD: No soy gruñón, soy impotente en este tema (que lo sea en este no implica que no lo sea en otros planos ... tampoco lo contrario, Mejor no aclaro más) :D

Calisco 09/05/2008 05:30

Re: Interrumpir eventos
 
Hice unas modificaciones usando una variable lógica que condiciona el evento ... funciona; pero creo que esto no termina aún.
Saludos.


La zona horaria es GMT -6. Ahora son las 19:04.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.