Où trouver un tutorial sur les frames ?
L'auteur vous propose le chapitre "Les frames" dans "Apprendre le langage Html".
Quels sont les navigateurs qui supportent les frames ?
Netscape 3 et +, Internet Explorer 3 et + et Opera 3 et + supportent les frames. Soit [à fin 2000], 90 à 95 % des navigateurs utilisés pour le Web.
Que faire pour les navigareurs qui ne supportent pas les frames ?
Lorsque un navigateur incapable de lire les frames accède à votre page (de frames), il n'affiche absolument rien, même pas un message d'erreur. Il est donc prudent de produire un contenu de remplacement par les balises <NOFRAMES>...</NOFRAMES>.

La balise <NOFRAMES> se positionne après la dernière balise </FRAMESET>. On prévoit alors le contenu pour les navigateurs et la balise de fermeture </NOFRAMES>.

Exemple :
<HTML>
<HEAD>
</HEAD>
<FRAMESET cols="50%, 50%">
<FRAME src="menu.htm" name="menu">
<FRAME src="contenu.htm" name="contenu">
</FRAMESET>
<NOFRAMES>
<P>Voici une version du document <A HREF="main.htm">sans frames.</A></P>
</NOFRAMES>
</HTML>

Il faut raisonnablement noter qu'on rencontre de moins en moins de navigateurs dans les versions qui ne supportent pas les frames.

Comment masquer les bordures des frames ?
On ajoute les attributs suivants à la balise <FRAMESET> :
<FRAMESET framespacing=0 frameborder=0 border=0>.

Sous Netscape, l'attribut border=0 suffit. Par contre sous Explorer, outre frameborder=0, il faut aussi mettre à 0 l'espacement entre les frames (par défaut 1) en utilisant l'attribut framespacing=0. En reprenant les 3 attributs, les bordures seront masquées sous les deux navigateurs.

On rencontre également la formulation frameborder=no.

Peut-on modifier l'épaisseur des bordures ?
Par défaut, l'épaisseur de la bordure fait 5 pixels de large. On peut la modifier par les attributs border=x (Netscape) et frameborder=x (Explorer).
Peut-on définir la couleur des bordures des frames ?
Sous Netscape, cela est possible avec l'attribut bordercolor=couleur ou bordercolor="#valeur hexadécimale".

Sous Explorer, qui ne reconnaît pas cet attribut, on peut simuler des bordures de couleur par l'astuce suivante au moyen de l'attribut framespacing. Affectez une teinte ou une image d'arrière-plan à la page du frameset, puis définissez l'espacement de façon à laisser transparaître la couleur ou le graphique.

Peut-on masquer les barres de défilement ?
Par défaut, les barres de défilement apparaissent lorsque toutes les informations ne peuvent être affichées dans le cadre (scrolling="auto"). Pour que ces barres ne s'affichent en aucun cas, on peut utiliser l'attribut scrolling="no".

On ne peut que mettre en garde les concepteurs de pages Web, qu'il est indispensable dans ce cas de s'assurer que l'ensemble de l'information du cadre reste visible quelle que soit la résolution du visiteur.

L'attribut scrolling="yes" fera apparaître en permanence ces barres de défilement.

Comment ajuster les marges d'un frame ?
Par défaut, Netscape et Explorer appliquent une marge de chaque côté d'un frame. On peut définir les marges de façon à agrandir, diminuer ou éliminer cet espace.

Ainsi, avec les attributs marginwidth=0 et marginheight=0 dans la balise frame concernée, le contenu (du frame) commencera dans le coin supérieur gauche.

Comment sortir des frames ?
Au départ d'un lien dans une page de frame, on désire parfois sortir des frames pour afficher la nouvelle page en pleine fenêtre. On utilise alors l'attribut target dans la balise de lien.

Target="_blank" ouvrira le lien dans une nouvelle fenêtre du navigateur.
Target="_top" ouvrira le lien dans la fenêtre courante du navigateur.

Attention, l'attribut de target est "case sensitive". Ainsi "_TOP" sera considéré comme un nom de fenêtre et le navigateur, en toute logique" ouvrira une nouvelle fenêtre.

Comment afficher une nouvelle page dans le même cadre ?
Au départ d'un lien dans un cadre, on désire parfois afficher une nouvelle page dans le même cadre. On utilisera alors target="_self" dans la balise de lien. Mais c'est ce que fera par défaut le navigateur.
Comment afficher une nouvelle page dans un autre cadre ?
Il faut avoir au préalable avoir donné un nom au frame dans la balise <FRAME>. Soit, <FRAME src="contenu.htm" name="cible">.

Dans la page où se situe le lien, ajoutez à la balise de lien l'attribut target="cible". Soit,
<A HREF="fichier.htm" target="cible">

Comment modifier simultanément le contenu de deux ou plusieurs frames ?
Il faut passer par du Javascript. L'auteur vous propose l'explication suivante.
Comment être certain que mon site ne sera pas repris dans un frame ?
Il peut arriver qu'un autre concepteur fasse un lien vers votre site à partir d'un frame. Votre site risque alors de s'afficher dans le frame du site de départ. La plupart du temps, l'allure de votre site est alors déformée car ce dernier a été conçu pour un affichage en pleine page.

Une solution Html consiste à ajouter à chaque lien l'attribut de votre site target="_top". Ainsi en cliquant sur n'importe quel lien de votre site, le visiteur sortira de tous les frames possibles. Si la page ne comporte pas de frames, le visiteur ne verra pas de différence.

Il existe cependant une solution en Javascript qui est nettement plus élégante.

Comment créer un frame flottant ou en ligne (la balise IFRAME) ?
Attention ! IFRAME n'est reconnue que par Explorer 4+. Bien que faisant partie des spécifications Html 4.0, cette balise n'est pas (encore?) reconnue par Netscape jusqu'à sa génération 4.

La balise et ses attributs sont d'un emploi simple :
<IFRAME src="contenu_iframe.htm" width=200 height=200>
Texte pour les navigateurs qui ne reconnaissent pas les frames flottants
</IFRAME>

Les attributs classiques comme frameborder, scrolling, name, marginwidth et marginheight peuvent être utilisés.

Peut-on créer un frame invisible ?
Il suffit de créer un frame de largeur à 0% et avec des bords invisibles. On peut ajouter l'attribut noresize pour empêcher le visiteur perspicace de redimensionner le frame.

Exemple :
<FRAMESET cols ou rows="0%,100%" border=0 frameborder=0 framespacing=0>
<FRAME SRC="home.htm" noresize>
<FRAME SRC="secret.htm" noresize>
</FRAMESET>

Peut-on passer des valeurs d'un frame à un autre frame ?
Oui et c'est là une des utilités des frames que de passer des données d'une page à l'autre à l'intérieur d'un site (technique aussi appelée "panier à provisions"). Mais ceci n'est possible que par du Javascript. En voici une explication.
Comment proposer une version sans frames ?
Dans une page avec des frames, on peut avec un petit Javascript proposer au visiteur de passer à une version sans frames. Pour ce faire, on ajoute dans le fichier Html que l'on souhaite être vu sans frames, le script suivant :

<script>
function Noframes() {
top.location.href="adresse_de_la_page";
}
</script>

Pour déclencher le script, on incluera plus loin dans le body le bouton suivant :

<form>
<Input Type="button" Value="Sans Frames" onClick="Noframes()">
</form>