Pour commencer avec les frames
Les frames, appelées aussi cadres en français, permettent de partager l'écran du navigateur en plusieurs fenêtres indépendantes (le plus souvent en 2 fenêtres l'une contenant le sommaire, l'autre le contenu). A chaque fenêtre correspond un document (X)HTML spécifique.
Le jeu de cadres est spécifié dans un fichier, appelé couramment le frameset, du nom de l'élément principal.
<frameset>
Elément définissant une structure de cadre dans un sens vertical ou horizontal. Il est possible d'imbriquer les éléments <frameset>.
Les attributs essentiels sont :
- cols : pour faire des séparations verticales, avec en valeur les largeurs corrrespondantes.
- rows : aire des séparations horizontales, avec en valeur les largeurs corrrespondantes.
- name : nom de l'élément frameset.
<frame>
Elément-fils de l'élément <frameset> et servant à définir un cadre.
Les attributs essentiels sont :
- src : sa valaur est l'URL du fichier (X)HTML correspondant.
- name : nom de l'élément frameset.
<noframe>
L'élément <noframe>, fils de l'élément <frameset>, permet de donner un contenu alternatif pour les navigateurs ne prennant en charge les cadres.
Exemple :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Accueil</title>
</head>
<frameset rows="100,*">
<frame src="sommaire.html" name="sommaire" />
<frame src="chapitre1.html" name="contenu" />
<noframes>
<body>
<p>Votre navigateur ne prend pas en charge les frames.</p>
</body>
</noframes>
</frameset>
</html>
Exemple de jeu de cadres
Il est à noter que la DTD à utiliser est de type Frameset. L'élément <frameset> est fils de l'élément <html>.
Les liens entre les cadres sont spécifiés par des éléments de type <a href=""> avec en attribut target spécifiant le cadre cible.
Exemple, dans le fichier chapitre.html :
<a href="chapitre1.html" target="contenu">Chapitre 1</a>
Pour en finir avec les frames
L'utilisation des frame pose des problèmes majeurs :
- Problèmes de navigation :
- Le bouton [Précédent] ne fonctionne pas dans certains cas.
- Le bouton [Recharger la page] renvoie généralement au frameset initial et le contenu ne correspond pas à celui recherché.
- Problème de liens : impossibilité ou difficulté de pointer une page spécifique de contenu ; donc pas de marque-page, pas de liens directs par mail, ni sur une autre page web.
- Problème de développement et de maintenance. Une architecture en frames oblige à "gérer" cette hiérarchie et peut poser des problèmes spécifiques, par exemple pour les modifications à effectuer dans des cadres différents. En outre et c'est le problème fondamental des frames un fichier-cadre n'est prévu que lié à d'autres. En conséquence, en travaillant sur un fichier-frame on doit prendre en considération le jeu de cadre global ; ce qui ne simplifie pas la tâche pour du développement et la complique sérieusement pour de la maintenance-reprise de code.
- Problèmes d'accessibilité, imposant de fortes contraintes : nécessité d'avoir une structure simple, l'expliciter, et donner une alternative en utilisant l'élément <noframe> pour l'accès complet (ce qui revient à faire un doublon du site.)
- Problèmes de référencement :
- Les moteurs indexent parfois peu ou pas le contenu des frames, quoique Google soit assez efficient dans ce domaine.
- si un contenu est référencé, dans la page de résultats du moteur, les liens pointent vers des fichiers-cadres, dites pages orphelines, qui constituent du contenu décontextualisé et souvent une impasse en terme de navigation.
- Problème d'impression :les pages s'impriment mal ou en partie. Cela dépend des navigateurs.
- Problème esthétique et de disparition de contenu : soit on empêche les ascenseurs et du contenu peut être rogné, voire disparaître. Soit on les autorise (suivant les recommandations d'accessibilité cette option doit être très justement toujours possible, pour par exemple si l'on souhaite grossir les caractères), et il est alorspossible que le site apparaisse bardé d'ascenseurs horizotaux et/ou verticaux dans certains environnements ou configurations.
Pour ces différentes raisons pratiques, on comprend que les frames soient aujourd'hui en voie de disparition.
En savoir plus :
http://www.projetweb.com/labalise/frames_1.php
http://openweb.eu.org/articles/finir_cadres/