W3docs

Balise HTML <noframes>

La balise <noframes> contient un texte alternatif affiché dans les navigateurs ne supportant pas les frames. Voir des exemples

La balise <noframes> définissait le contenu de secours affiché lorsqu'un navigateur ne pouvait pas rendre un frameset. Avec <frameset> et <frame>, elle faisait partie de l'ancien modèle de « frames » qui divisait une fenêtre de navigateur en plusieurs documents indépendants.

Danger

N'utilisez pas <noframes>, <frameset> ou <frame> dans de nouveaux projets. Ces éléments ont été dépréciés en HTML5 (2014) et ne sont plus pris en charge par les navigateurs modernes. Cette page est conservée uniquement à titre de référence — pour lire ou maintenir du code hérité, et non pour écrire de nouveau balisage.

Cette page explique ce que faisait <noframes>, pourquoi il a disparu, et ce qu'il faut utiliser à la place.

À quoi servait <noframes>

À l'ère des frames, une page était divisée en plusieurs régions, chacune chargeant son propre document HTML. Certains navigateurs anciens (et de nombreux lecteurs d'écran) ne pouvaient pas afficher les frames du tout. L'élément <noframes> offrait à ces utilisateurs une alternative :

  • Un court message tel que « Votre navigateur ne supporte pas les frames. »
  • Un lien vers une version sans frameset (page unique) du site.
  • Tout contenu au niveau du <body> servant de solution de repli utilisable.

Si le navigateur prenait en charge les frames, le contenu de <noframes> était ignoré. L'élément était imbriqué dans <frameset>, qui remplaçait lui-même le <body> de la page.

Pourquoi les frames sont obsolètes

Les frames causaient des problèmes graves et bien connus qui ont conduit à leur suppression :

  • Signets et URL brisés — la barre d'adresse affichait l'URL du frameset, et non le document que l'utilisateur consultait réellement, de sorte que les liens et les signets pointaient vers le mauvais endroit.
  • Mauvaise accessibilité — les lecteurs d'écran avaient du mal à restituer plusieurs documents indépendants dans une même fenêtre.
  • Préjudice pour le SEO — les moteurs de recherche indexaient les documents de frames individuels hors contexte, sans navigation environnante.
  • Aucune réactivité — le dimensionnement fixe des frames ne s'adaptait pas aux écrans mobiles.

Pour ces raisons, l'ensemble du modèle de frames — et <noframes> avec lui — a été supprimé du standard HTML.

Ce qu'il faut utiliser à la place

Vous n'avez pas besoin de frames ni d'un élément de secours. Le HTML et le CSS modernes couvrent tous les cas d'usage que les frames servaient autrefois :

  • Mise en page — construisez des colonnes, des barres latérales et des en-têtes avec des éléments HTML normaux et CSS Flexbox ou Grid au lieu de diviser la fenêtre en régions de frames.
  • Intégration d'un autre document — utilisez l'élément <iframe> pour intégrer une page (une carte, une vidéo ou un widget externe) dans une autre. Contrairement à <frameset>, <iframe> est entièrement pris en charge et ne brise pas l'URL de la page.
  • En-tête/pied de page/navigation partagés — au lieu de charger une frame de navigation une seule fois, rendez le balisage partagé avec un moteur de templates, un générateur de site statique ou un composant JavaScript.
Info

L'élément <iframe> est le seul tag « de type frame » encore inclus dans HTML. Si votre objectif est d'intégrer du contenu externe, utilisez <iframe> — pas <frameset>.

Syntaxe

La balise <noframes> fonctionnait en paires. Le contenu était écrit entre les balises ouvrante (<noframes>) et fermante (</noframes>), à l'intérieur d'un <frameset>.

Exemple de la balise HTML <noframes> (héritage, à titre de référence uniquement) :

Balise HTML <noframes>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
<html>
  <head>
    <title>Title of the document</title>
  </head>
  <frameset cols="50%,50%">
    <frame src="https://www.w3docs.com/learn-html.html">
    <noframes>Sorry, your browser doesn’t support frames. </noframes>
  </frameset>
</html>

Dans un navigateur capable d'afficher des frames à l'époque, cela aurait divisé la fenêtre en deux colonnes. Aujourd'hui, les navigateurs ignorent les éléments <frameset> et <frame>, de sorte que la page se rend comme si elle était vide — c'est précisément pourquoi ce balisage ne devrait jamais être utilisé dans un nouveau projet.

Prise en charge par les navigateurs

Supprimée. La prise en charge des frames a été abandonnée par les navigateurs modernes. Il n'existe aucune version de Chrome, Firefox, Safari ou Edge dans laquelle écrire <frameset> / <frame> / <noframes> produit des frames fonctionnelles. Ces éléments ne font pas partie du standard HTML actuel et les validateurs les signalent comme obsolètes. Considérez-les comme une fonctionnalité historique sans avenir.

Attributs

La balise <noframes> n'utilisait que les attributs globaux. Comme l'élément lui-même, ceux-ci sont obsolètes dans ce contexte.

Exercice

Pratique
Quel était l'objectif initial de la balise <noframes> en HTML hérité ?
Quel était l'objectif initial de la balise <noframes> en HTML hérité ?
Was this page helpful?