Ver Mensaje Individual
  #11 (permalink)  
Antiguo 05/06/2012, 13:07
Avatar de emprear
emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 17 años, 5 meses
Puntos: 1567
Respuesta: problema imagen de precarga con internet explorer

Cita:
Iniciado por furoya Ver Mensaje
Sí, ya sabemos
Por el momento, no esperes a emprear, se está peleando con unos loops de contadores regresivos que lo tienen bastante mal.
Me extraña Araña.... eso lo resolvi en 5 minutos, simplemente pregunté en el mejor Foro de programación Web que existe, te paso la dirección, está muy bueno, y los colaboradores sobre todo, un "lujo"...
http://www.forosdelweb.com
Ojo, posteá con un poco de nivel o te mandan a pasear....
Volviendo al tema que nos ocupa.
@jesus1975
vamos a separar la paja del trigo porque si no se confunde.
Como vos sabrás (doy por hecho que lo sabés, porque lo estás haciendo en varias partes de tu web), con Ajax podés cargar contenido dinámico sin necesidad de recargar la página.
Un ejemplo archiconocido
tengo un div comentarios en la pagina index.html
con Ajax hago una petición al archivo comentarios.php e incluyo lo que genere comentarios.php (podrá ser estático o una consulta a una BD, pero eso ya es otra cosa) en el div del index sin recargar, si hicieses que la función ajax fuese llamada con un timer, mantendrias actualizados los comentarios permanentemente..
Ahora, mientras se realiza el proceso entre la petición y la respuesta, Ajax va ofreciendo diferentes valores para la propiedad readyState, a saber
0 No inicializado (el método open no a sido llamado)
1 Cargando (se llamó al método open)
2 Cargado (se llamó al método send y ya tenemos la cabecera de la petición HTTP y el status)
3 Interactivo (la propiedad responseText tiene datos parciales)
4 Completado (la propiedad responseText tiene todos los datos pedidos al servidor)
Mientras está en uno, podémos incluir una imágen (el famoso circulito que gira o la barrita azul en tu caso)

Lo habitual es
Código Javascript:
Ver original
  1. if (ajax.readyState==1){
  2. document.getElementById(capa).innerHTML = "<img src='ajax-loader.gif' align='center' /><br /> Aguarde por favor...";
  3. }
y mostrar la imagen en la misma capa en que cargas el contenido.
En este caso IE no tiene ningún problema (cuidado, que a veces la respuesta del server es tan rápida que tampoco ves nada, no porque hayas hecho algo mal)
Lo que vos hiciste, NO tiene nada que ver con lo anterior, vos solo tenias puesto el gif y la capa oculta y la mostrabas con el click (es en ese método donde IE falla, me topé con el error hace mucho tiempo y nunca le encontré solución).
Convengamos en que es una cosa más visual que que funcional, porque por ahi el upload te falla y el usuario sigue viendo la imágen.
Y aqui me detengo porque tengo un problema, no pude identificar como haces el upload de las imágenes, supongo que con Ajax, pero no encontré donde, vi cosas como esta en tus scripts
Código Javascript:
Ver original
  1. var ajax=nuevoAjax();
  2.         ajax.open("POST", "scripts/autocompletado.php", true);
  3.         ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
  4.         ajax.send("ingreso="+valor);
  5.            
  6.         ajax.onreadystatechange=function()
  7.         {
  8.             if (ajax.readyState==4)
  9.             {

Pero del upload en particular no encontré nada.
Bueno, las soluciones;
si haces el upload con ajax le ponés el código del ajax loader como indique arriba para readyState == 1, pero en lugar de hacer el innerHTML para la propia capa ó celda que carga las miniaturas lo haces para la capa "cargando", que por supuesto tendrá que estar vacia y NO oculta

Si no usas Ajax para el upload, lo que tendrá que hacer es una petición a un html que solo contenga

<img src="cargando.gif" alt="" /> y hacer que la respuesta cargue en el div cargando, desde ya que si usás este último método no hace falta que uses lo de readyState, ya que no vas a mostrar una imagen a la espera de que cargue la misma imagen.

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.