Recuperar una estructura de marcos o salir de ella

Puede ocurrir que un buscador haya indexado una página de nuestro sitio que está incluida dentro de una estructura de marcos. Si un navegante utilizara ese enlace para cargar la página recuperaría su contenido, pero lo más probable es que, al haber perdido el resto de las páginas que componían la estructura, hayamos perdido el marco en el que aparecían los enlaces de navegación, por lo que la página habrá perdido una parte importante de su funcionalidad.


En la situación que se ha planteado nos interesa recuperar la estructura original para lo cual recurriremos a un simple código javascript que insertaremos en la zona <head> de nuestra página.

<script language= "JavaScript" type= "text/javascript">
<!--
if (parent.location.href==location.href) {
parent.location.href="mi_página_de_marcos.htm";
}
//-->
</ script>

Aunque en este curso no abordemos Javascript veamos una explicación de lo que hace este script:

  1. Comprueba si la página "padre" es la propia página que se está comprobando...
  2. En caso de ser así eso significa que la página no está dentro de la estructura de marcos correcta y recarga la ventana de forma que la página "padre" de la actual sea la que contiene la definición de los marcos.

Descomprime el archivo houdini.zip: comprobarás que incluye un archivo frameset.htm que define una estructura de marcos.

Abre cualquiera de los archivos maina.htm, mainb.htm o mainc.htm y comprueba que se abren como páginas individuales.

Modifica los archivos maina.htm, mainb.htm y mainc.htm para que, cuando intentes abrirlos de forma individual actualicen la ventana cargando la estructura de marcos completa

Escapar de una estructura de marcos

Otra situación que puede darse es que alguien que tiene una página creada con marcos haya creado un enlace a nuestras páginas que también están creadas con marcos. En ese caso lo que ocurriría es que nuestra estructura quedaría "presa" dentro de la zona desde la que se la llama, con la consiguiente pérdida de espacio para mostrar correctamente la información.

En este caso lo que nos interesa es "liberar" nuestras páginas con marcos para que puedan ocupar toda la ventana y no solo la zona que se les adjudica al encerrarlas en una estructura superior

Mientras en el caso anterior el script iba en las páginas de contenidos, lo que nos interesa en este caso es que el código vaya en la propia página que define los marcos. El código podría ser el siguiente:

<script language="JavaScript" type="text/javascript">
<!--
if (parent != self) {
top.location.href="mi_página_de_marcos.htm";
}
//-->
</script>

Lo que hace el script es:

  1. Comprueba si el contenedor padre es diferente de la propia página con la definición de los marcos.
  2. Si es así se debe a que la página se encuentra encerrada y lo que hace es recargar la ventana poniéndose a sí misma como contenedor principal por encima de todo.

En el archivo houdini.zip encontrarás también un archivo llamado frameset2.htm que define una estructura de marcos, haciendo que en su zona principal se cargue el archivo frameset.htm que ya hemos visto que es, a su vez, una estructura de marcos. Compruébalo en tu navegador.

Modifica el archivo frameset.htm para evitar que se pueda ver encerrado en una estructura de marcos. 

Comprueba que todo funciona correctamente abriendo en el navegador el archivo frameset2.htm. Si todo ha ido bien debería haber desaparecido el menú con fondo amarillo y mostrarse sólo el archivo frameset.htm (el fondo del menú es de color cián)