Botón "atras" del navegador
El botón "Atrás" o "Back" siempre ha dado problemas. Para los usuarios es muy útil, pero para nosotros (los desarrolladores), un problema no menor que puede hacer tambalear cualquier solución web.
Hasta ahora nunca he visto una solución 100% efectiva (tampoco traigo la panacea), y estudiando el porqué se producen los problemas, la única salida "viable" que se ve es la eliminación definitiva del botón, pero sabemos que eso no va a ocurrir.
Muchas soluciones vistas incluyen abrir una nueva ventana con javascript y esconder los botones. Esta funciona bien hasta que el usuario decide mostrar los botones por que a él le gustan. Los que creen que eliminando los botones evitan su funcionamiento, basan sus creencias en que el usuario no es muy diestro con el navegador, suposición a veces correcta y otras no.
El botón back se puede simular de al menos tres formas que yo conozco.
1.- Presionando el botón derecho del Mouse y eligiendo atrás dentro del menú contextual. Muy simple. Claro, alguien puede suprimir con javascript el hecho de que se pueda presionar el botón derecho, pero ahí coartas la libertad de navegación. Detesto esas páginas.
2.- Con BackSpace o retroceso. Muy simple también. Ahora tendrían que no permitir con javascript el presionar BackSpace, cosa que no tiene lógica.
3.- Haciendo Alt + Flecha Izquierda. Esta se la conocen menos personas. Y es difícil que puedan bloquearla.
¿Que hacer entonces ya que claramente debemos vivir con el problema?
Una solución que he escuchado es hacer tu mapa de navegación del sitio y controlar que el usuario no se salga de este y si aplica back, revisar si se salió y redirigirlo nuevamente a la página. El primer problema viene cuando el usuario tiene configurado el browser para que use la versión del caché y no la del servidor (opción por defecto en IE 5.X). Hasta ahí nomás llega la validación ya que nunca supimos desde el servidor si se salio de la ruta.
¿Que hacemos nosotros en mi empresa?
Aprender a vivir con el problema, es decir, preparando tus páginas a que si el usuario hizo back y tienes información que no debiera estar en esa página (variables sesión, etc), redirigirlo manualmente a otra página, algo así como la opción anterior, pero esta no se dispara cuando hace back sino cuando hace algo después de hacer back.
¿Qué otra opción conozco dentro de las cuales me atrevería a recomendar?
He visto una solución "parche", pero no tiene ninguna elegancia. Consiste en implementar una sentencia de javascript que haga un forward en la página que no quieres que hagan back. Veamos un ejemplo para que quede mas claro.
Si tienes dos páginas, A y B, y el usuario está en A y luego pasa a B, y no quieres que el usuario de B pueda llegar a A con un back, en A agregas una sentencia en el del tipo .
history.forward();
Esto hará que si el usuario hace back en B, al cargar A lo envía hacia B obligatoriamente. Una gracia que tiene es que al momento de cargar A por primera vez, el script no hace nada y no reclama.
No es una solución ideal, pero te puede salvar en algunos casos.
Patrick Mac Kay
Agosto 2004