Foros del Web » Programando para Internet » Javascript »

onclick tiene que esperar en IE para ejecutarse otra vez

Estas en el tema de onclick tiene que esperar en IE para ejecutarse otra vez en el foro de Javascript en Foros del Web. Buenas, tengo una barra de busqueda en la página que estoy haciendo. Ésta aparece y se oculta segun pulso un botón. El botón tiene onclick="verOcultarMenuBusqueda();" ...
  #1 (permalink)  
Antiguo 07/07/2007, 14:54
 
Fecha de Ingreso: mayo-2006
Mensajes: 64
Antigüedad: 18 años
Puntos: 0
onclick tiene que esperar en IE para ejecutarse otra vez

Buenas,
tengo una barra de busqueda en la página que estoy haciendo. Ésta aparece y se oculta segun pulso un botón.
El botón tiene onclick="verOcultarMenuBusqueda();"
que ejecuta lo siguiente:

Código:
var movb;
var ypos=85;
			
function VerOcultarMenuBusqueda() 
{
	if (movb==2) movb=-2;   // cuando se vuelve a ejecutar VerOcultaMenu, mov=2 (ya se mostró) y ahora será negativo para ir restando 
	else 		movb=2;	  // al principio esta oculto -> mov=2, se va aumentando xpos 

	MoverMenuBusqueda();
}		
function MoverMenuBusqueda()
{
	ypos=ypos+(4*movb);
	if(ypos < 85) ypos=85;
	if(ypos > 115) 	ypos=115;
				
	document.getElementById("contenedor_perfil_barra").style.top=ypos+"px";
				
	if (ypos <= 85 || ypos >=115) window.clearTimeout();
	else window.setTimeout(MoverMenuBusqueda,14);				
}
Esto mostrará u ocultará el menú de busqueda.

El problema es que en firefox puedo hacer clicks rápidamente, y aunque haya mostrado/ocultado la mitad, comienza a hacer lo contrario, pero en IE, si hago un click y vuelvo a hacerlo rápidamente no funciona, hay que esperar unas decimas de segundo para que vuelva a ejecutar el VerOcultarMenu haciendo click (ignora los clicks rápidos después del primero).

Alguien sabe porque ocurre esto con IE y alguna posible solución?

gracias y saludoos
__________________
webplan - Diseño y desarrollo de páginas webs.
Desde Andalucía - España
  #2 (permalink)  
Antiguo 09/07/2007, 04:50
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
Re: onclick tiene que esperar en IE para ejecutarse otra vez

Hola

No se me ocurre a priori lo que puede hacer que tarde el tiempo de respuesta en IE. Pero veo que la función
if (ypos <= 85 || ypos >=115) window.clearTimeout();
No tiene mucho sentido, porque clearTimeout() tiene que tener un parámetro que indica el setTimeout que deseas parar. Si no deseas parar ninguno no hace falta llamarle a la función.


¿Cuánto tiempo tarda en total en ocultar el menú? Quizá haya que esperar ese intervalo de tiempo. De todas maneras la mejor manera creo que es monitorizar la ypos.


Un saludo.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #3 (permalink)  
Antiguo 09/07/2007, 06:40
 
Fecha de Ingreso: mayo-2006
Mensajes: 64
Antigüedad: 18 años
Puntos: 0
Re: onclick tiene que esperar en IE para ejecutarse otra vez

Cita:
if (ypos <= 85 || ypos >=115) window.clearTimeout();
No tiene mucho sentido, porque clearTimeout() tiene que tener un parámetro que indica el setTimeout que deseas parar. Si no deseas parar ninguno no hace falta llamarle a la función.
te refieres a poner ?

Código:
	if (ypos <= 3 || ypos >=32) window.clearTimeout(id);
	else id=window.setTimeout(MoverMenuBusqueda,14);
me sigue haciendo lo mismo.

he probado a crear una funcion que sume 1 a una variable cada vez que hago click, en firefox se suman todos los clicks, pero en ie solo la mitad, ignora el resto.
asi que el problema no es de la funcion esa que hice, es de ie.
el tiempo de ejecucion de la funcion parece que tampoco es problema porque en la prueba que hice era : contar++; lo que ejecutaba onclick.
__________________
webplan - Diseño y desarrollo de páginas webs.
Desde Andalucía - España
  #4 (permalink)  
Antiguo 09/07/2007, 07:30
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
Re: onclick tiene que esperar en IE para ejecutarse otra vez

Sí, el script tiene el mismo efecto porque
window.clearTimeout(id); no hace nada.

El clearTimeout sirve para cancelar un setTimeout que ya ha sido iniciado, pero en tu caso no hay que cancelar nada, simplemente ejecutar el setTimeout siempre que haga falta. Es decir, sólo habría que ejecutar el else, o en tu caso:

Código PHP:
    if (ypos >= || ypos <=32)
         
id=window.setTimeout(MoverMenuBusqueda,14); 
a secas, estaría correcto.


¿Entonces quedamos que es error del navegador no? No se puede hacer nada pues.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:31.