Poltergeist de HTML...

Cuidado, este artículo es para mayores xD

Ayer en el curro detectamos un error en uno de los sitios web que estamos desarrollando... una clase PHP que registra las visitas al sitio nos estaba grabando siempre dos veces las visitas en index.php... ¿? Y lo que en principio parecía una chorrada se convirtió en una odisea. A saber, estos fueron nuestros pasos a seguir:

  • Primero comprobamos que el método que grababa la visita lo hacía una sola vez, y efectivamente, así era
  • Pusimos unos cuantos echos antes y después de grabar la visita, y solamente se mostraban una vez
  • Verificamos que solamente pasaba en esa página. El resto del sitio funcionaba perfectamente

La cosa empezaba a ponerse complicada... porque parecía que no era culpa del PHP...
Entonces fue cuando nos dimos cuenta de que la página estaba cargándose dos veces. ¡! Ein? Comorrr? Quién le manda?
Vale, entonces el problema no era que se registrara dos veces la página, porque efectivamente se estaba ejecutando dos veces...
Siguientes experimentos:
  • Nos pusimos a buscar si había algún header que nos redirigiera al index, pero no encontramos nada...
  • Será cosa de cliente? Empezamos a buscar si había algún extraño document.location.href, algún indicio que justificase esa navegación. Tampoco
  • Empezamos a comentar código para ver quién era el culpable, y descubrimos que en cuanto no pintábamos unos divs, la página dejaba de navegar dos veces. Sin embargo los divs aparentemente no tenían nada extraño...


Otra de las pruebas que hicimos era poner un alert... y solamente se mostraba una vez. Otra cosa rara. Un alert pero dos visitas al servidor??

<div class="banner enlace" onclick="document.location.href='otrapagina.php?id=algo'">
<img src="" alt="imagen" />
<p>hola que pasa </p>
</div>

Bien. Aquí teníamos el problema... pero... cuál es?? Sospechando un click misterioso que lanzara el location, quitamos el onclick. Seguía navegando... y llegamos a la solución. src="". Cambiamos nuestro src por uno válido y dejó de navegar. Alucinando, probamos a poner un churro de texto en el src... y tampoco fallaba!!
Luego nuestra conclusión es que no se puede poner un img con un src vacío. La verdad es que nos tiene un poco flipando aún. No se nos ocurrió la forma de buscarlo en google porque seguro que tiene que estar documentado en algún sitio...

El caso es que probamos con más navegadores el poltergeist en cuestión. De Firefox (el navegador que usamos habitualmente) probamos con el IE7... ¡y también fallaba!... hmmm... y con Chrome? Probamos con Chrome y... voila! NO FALLA!! Probamos con Ópera y... NO FALLA! y probamos con Safari y... NO FALLA!! Todo esto en entorno Windows...

luego... qué sucio código se han copiado firefox y explorer para tener esa locura de fallo! qué demonios pasa realmente para que la página se ejecute dos veces en el servidor y solamente una vez en cliente? por qué, dios mío, por quéeeeeeeee???!!!!!

3 comentarios:

 

version 1.6 20/12/08 - best viewed in 1024x768 or higher with firefox

certificado por
GuiaBlog
rugby