Histórico en frames

Hola,
Estoy preparando una web con una estructura bastante compleja utilizando un sistema de plantillas y frames. A partir de la página principal, abro en varios frames a la vez una página con unos parámetros. Funciona perfectamente.
El problema me surge a la hora de que si se utiliza el botón de atrás del navegador, como va de uno en uno, pues no vuelve a la página anterior principal, sino a la página que abro con su correspondiente llamada.
¿Conoces algún sistema para solucionar esto, sin tener que dejar utilizar frames?
Muchas gracias de antemano
1

1 Respuesta

28.975 pts.
Tu problema es muy frecuente, máxime cuando existen ligeras diferencias entre navegadores a la hora de gestionar la historia de navegación en una página con frames. De hecho, el modelo de historia y navegación "adelante, atrás" deja de tener sentido cuando se usan frames, lo que es uno de los principales argumentos de los detractores de estos (que son muchos).
Dicho esto, y recordando que:
1) No hay forma de capturar el botón BACK del browser desde la página.
2) Puede abrirse una ventana sin barra de menús ni botonera, pero puede que no sea lo que quieras hacer...
... Hay una técnica que tal vez te sirva. Se trata de cargar los frames "secundarios" (sin duda, tu aplicación tiene un frame principal) siempre mediante script, usando el método replace() del objeto location. Es decir, cada vez que tengas un enlace:
<a href="javascript:location.replace('nuevapagina.html?x=1;y=2')" target="otroframe">Pulsa aquí</a>
O directamente desde el código, usando location. Replace('nuevapagina.html...'), pero siempre desde el frame a reemplazar. Si necesitas controlar esto desde un frame "hermano", tienes que hacer parent. Nombreframe. location. Replace() (con parent sales al frameset inmediatamente superior, y nombreframe es el NAME del FRAME a direccionar en el frameset; si tienes una estructura más anidada, puedes usar top en vez de parent -- te lleva al frameset más externo).
El método location. Replace() tiene la ventaja de que sustituye a la página a la que sobreescribe en la historia, y por tanto la página anterior "desaparece" y no se puede volver a ella por ningún medio.
Dependiendo de la estructura de tu página necesitarás bastantes pruebas hasta que te funcione correctamente... Mucha suerte.
No dudes en preguntarme de nuevo si tienes problemas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas