6. Frames
Los principales navegadores que soportan Frames son Netscape Navigator
(versión 2.0 en adelante) e Internet Explorer (versión 3.0
en adelante). Los Frames, que traducido sería algo así como
cuadros o marcos, son áreas definidas dentro de una misma ventana,
cada cual como una página independiente, con su propio código,
colores, titulo, etc.
Un documento con Frames tiene la estructura básica de un documento
normal de HTML, solo que el elemento <BODY> es reemplazado por <FRAMESET>,
que describe los subdocumentos que contendrá cada FRAME
<HTML>
<HEAD>
</HEAD>
<FRAMESET>
</FRAMESET>
</HTML>
FRAMESET acepta dos atributos, ROWS (filas) y COLS (columnas). Dentro de
este elemento, colocamos el comando FRAME, que al igual que el comando
IMG (imagen) acepta el parámetro SRC. Si queremos que en un frameset
cargue una página llamada menu.htm sería: <FRAME SRC="menu.htm">.
Como todo, lo mejor es ver un ejemplo. Supongamos que queremos dividir
una página en dos, de un lado el menú, y por otro lado que
se despliegue la información solicitada en el menú. El código
para esto sería:
<HTML>
<HEAD>
</HEAD>
<FRAMESET COLS="30%,70%">
<FRAME SRC="menu.htm" NAME="z1">
<FRAME SRC="info.htm" NAME="z2">
</FRAMESET>
</HTML>
El tamaño se puede especificar en porcentajes poniendo el símbolo
'%' a continuación del número, en pixeles poniendo solo el
número, o bien especificando un valor especial con el asterisco
'*' si queremos utilizar todo el espacio que queda. Esto es útil
para asegurarnos que un Frame siempre tenga un espacio mínimo disponible.
Por ejemplo, si especificamos un menú de 200 pixeles y el resto
con '*', esto aseguraría que el menú nunca fuera menos de
200 pixeles. Es muy importante dar un nombre a cada Frame, pues necesitaremos
especificar el Frame en el que queremos desplegar la información.
El Parámetro TARGET
Supongamos que tenemos creadas las dos Frames del ejemplo anterior,
un menú del 30% y la información en el 70%. Si seleccionamos
un enlace (link) en el menú veremos la información desplegada
en el 30% del menú y no en el área de la información.
Esto se soluciona empleando el parámetro TARGET.
Supongamos que en el menú tenemos 3 opciones:
I. Volver a página principal
II. Ver lista de hoteles
III. Ver lista de restaurantes
Estas tres opciones están en el menú, pero queremos que al
seleccionar lista de restaurantes la información aparezca en otro
Frame
<HTML>
<HEAD>
</HEAD>
<BODY>
<OL>
<LI><A HREF="principal.htm" TARGET="_top">Volver
a página principal</A>
<LI><A HREF="hoteles.htm" TARGET="z2">Lista de
hoteles</A>
<LI><A HREF="restaur.htm" TARGET="z2">Lista de
restaurantes</A>
</OL>
</BODY>
</HTML>
Fíjate que el enlace (link) utiliza un nuevo parámetro: TARGET.
<A HREF="hoteles.htm" TARGET="z2">Lista de hoteles</A>
El parámetro TARGET especifica en que FRAME desplegaremos la
información seleccionada. En este caso es z2, que es el nombre que
se utilizó al definir el FRAME, con el parámetro NAME="z2".
En este caso z2 se define como el nombre lógico del FRAME al cual
hacemos referencia con el parámetro TARGET en un enlace. TARGET
también se puede usar con el elemento BASE. Ej:
<BASE TARGET="z2">
Esto se utiliza cuando tenemos muchas conexiones, que se despliegan
en un mismo FRAME, por ejemplo si tuviéramos 30 selecciones en el
menú. En vez de poner en cada conexión <A HREF="hoteles.htm"
TARGET="z2">Lista de hoteles</A>, ponemos al principio <BASE TARGET="z2">
y todas las conexiones automáticamente se desplegarían en
el FRAME z2.
La primer conexión del ejemplo, <A HREF="principal.htm" TARGET="_top">Volver
a página principal</A> tiene un TARGET especial.
TARGETs especiales
-
TARGET="_blank": Este TARGET hace que la conexión se cargue
siempre en una nueva VENTANA. Esta nueva ventana no tendrá nombre.
-
TARGET="_self": Hace que la conexión se cargue siempre en
el mismo FRAME donde esta la conexión. Es la opción por defecto.
-
TARGET="_parent": Este TARGET hace que la conexión se cargue
siempre en el FRAMESET que contiene al FRAME actual.
-
TARGET="_top": Hace que la conexión se cargue siempre en
la ventana del documento actual sin FRAMES.
FRAMES Invisibles
Crear FRAMES invisibles es muy sencillo, pero ten
en cuenta que solo podrán verlas quienes utilizan vesiones de Netscape
Navigator o MS Internet Explorer superiores a la 3.x.
Los navegadores de Netscape y Microsoft, incorporaron
a partir de las versiones 3.x, la posibilidad de controlar el borde de
un FRAME. Se puede achicar, agrandar, se puede poner un valor determinado,
si ponemos cero, tenemos el FRAME invisible. Veamos un ejemplo:
<FRAMESET FRAMEBORDER="0" FRAMESPACING="0" BORDER="0"
COLS="200,*">
<FRAME MARGINWIDTH="5" MARGINHEIGHT="10" SRC="1.htm"
NAME="menu" NORESIZE>
<FRAME MARGINWIDTH="10" MARGINHEIGHT="10" SRC="2.htm"
NAME="texto">
</FRAMESET>
Como ves, se crean dos FRAMES. El '1' llamado 'menú' de 200 pixeles
de ancho, el '2' llamado 'texto' del resto de ventana que queda. Nótese
en la declaración del FRAMESET dos parámetros:
FRAMEBORDER=0
FRAMESPACING=0
A pesar de que ambos hacen lo mismo, es necesario poner ambos para que
se vea correctamente con Netscape y Explorer.