Chaque cadre a-t-il un titre de cadre ?
Un utilisateur de lecteur d’écran qui parcourt une page arrive sur une <iframe>. Sans attribut title, son outil annonce l’URL source ou rien d’utile. Il ne sait pas si ce cadre contient une vidéo, une carte, un formulaire de paiement ou une bannière publicitaire. Il doit entrer à l’aveugle pour le découvrir.
L’attribut title sur une <iframe> résout ce problème : il permet à l’utilisateur de lire la nature du contenu avant de décider d’y entrer. C’est le seul signal disponible à ce stade. Le critère 2.1 vérifie une chose précise : l’attribut title est-il présent sur chaque cadre ? Pas de jugement sur la qualité du texte — c’est le rôle du critère 2.2. Ici, on contrôle la présence.
En pratique, les <frame> HTML4 des framesets des années 2000 ont disparu de la quasi-totalité des sites. Ce sont les <iframe> modernes qui comptent : vidéos YouTube, cartes Google Maps, widgets de chat, formulaires Typeform, lecteurs de podcast. Chacun doit porter un title non vide. Sans exception.
Un test pour vérifier que chaque cadre en ligne possède un titre
Présence du title sur <iframe> et <frame>
- Repérez tous les éléments
<iframe>et<frame>dans le DOM rendu (y compris ceux injectés dynamiquement par JavaScript). - Pour chaque cadre trouvé, vérifiez que l’attribut
titleest présent. - Vérifiez que la valeur de cet attribut n’est pas vide (
title=""ne constitue pas un titre de cadre). - Si chaque cadre possède un
titlenon vide, le test est validé. Un seul cadre sanstitle, ou avec untitlevide, fait échouer le test.
Exemples
❌ Non conforme : iframe YouTube sans attribut title
<iframe
width="560"
height="315"
src="https://www.youtube.com/embed/dQw4w9WgXcQ"
allowfullscreen>
</iframe>Sans title, NVDA ou JAWS annonce l’URL de l’iframe au moment où le focus y arrive. L’utilisateur entend quelque chose comme « youtube.com embed dQw4w9WgXcQ cadre », ce qui ne lui permet pas de décider s’il doit entrer dans ce cadre ou le passer.
✅ Conforme : iframe YouTube avec title descriptif
<iframe
width="560"
height="315"
src="https://www.youtube.com/embed/dQw4w9WgXcQ"
title="Vidéo YouTube : présentation de notre méthode d’audit accessibilité"
allowfullscreen>
</iframe>Le lecteur d’écran annonce le title au moment où le focus atteint le cadre. L’utilisateur sait immédiatement qu’il s’agit d’une vidéo YouTube sur un sujet précis. Il peut choisir d’y entrer ou de poursuivre sa navigation.
Astuces et pièges
⚠️ title="" : présent dans le DOM, non conforme au critère
Un attribut title vide est techniquement présent mais ne constitue pas un titre de cadre. La définition RGAA du « titre de cadre » implique un texte descriptif. En audit, title="" est relevé comme non-conforme au critère 2.1, au même titre qu’une absence totale d’attribut.
⚠️ Les iframes injectées par des scripts tiers sont aussi dans le scope
Les <iframe> créées dynamiquement par des scripts d’analytics, de publicité, de chat (Intercom, Drift) ou via Google Tag Manager sont soumises au même critère. En audit, elles sont relevées même si vous n’avez pas écrit le code. Si vous ne contrôlez pas le script, documentez le défaut et transmettez-le au prestataire concerné.
💡 Critère 2.1 et critère 2.2 : deux contrôles séparés
Le critère 2.1 vérifie uniquement la présence de title. Le critère 2.2 vérifie sa pertinence. En audit, traitez-les dans deux passes distinctes. Un title="cadre" est conforme au 2.1, non conforme au 2.2. Cette séparation évite les erreurs de classification dans le rapport de conformité.
⚠️ Une iframe peut déclencher deux audits en un
Quand une <iframe> charge une page entière — formulaire tiers, module de réservation, outil de configuration — cette page doit elle-même être conforme au RGAA. Un seul cadre non conforme dans l’échantillon peut faire chuter le taux global de façon disproportionnée. C’est une limite connue du calcul du taux de conformité.
⚠️ Les balises <frame> HTML4 sont quasi-disparues
La balise <frame> appartenait aux framesets HTML4, abondamment utilisés dans les années 1990-2000 et formellement obsolètes en HTML5. On en rencontre encore dans d’anciens intranets ou applications legacy. Si vous en trouvez, la règle est identique : un attribut title non vide est requis.
Questions fréquentes
Pourquoi le title YouTube généré par défaut ne satisfait-il pas toujours le critère RGAA 2.1 ?
Pour le critère 2.1, oui : la valeur est non vide, le critère de présence est satisfait. Pour le critère 2.2 en revanche, la question est débattue dans la communauté RGAA. Certains auditeurs acceptent un titre générique comme « YouTube », d’autres exigent un titre décrivant le contenu spécifique de la vidéo. Pour couvrir les deux critères sans ambiguïté, personnalisez le title avec le sujet réel de la vidéo.
Comment détecter les iframes injectées dynamiquement lors d'un audit RGAA ?
Inspectez le DOM rendu dans les DevTools (onglet Éléments ou Inspecteur), pas le source HTML initial. Les iframes injectées par JavaScript n’apparaissent pas dans le source mais sont visibles dans le DOM. Includdy les détecte et signale automatiquement l’absence ou la vacuité de title.
Comment gérer le title d'une iframe masquée avec display:none selon le critère 2.1 ?
Le RGAA n’exempte pas explicitement les éléments masqués en CSS. Les auditeurs ne relèvent généralement pas les iframes avec display:none permanents, car elles sont inaccessibles aux technologies d’assistance. En revanche, si l’iframe peut devenir visible dynamiquement (widget qui s’ouvre, modale), elle doit porter un title dès le rendu initial.
Comment choisir entre contenu interne et nature du cadre pour le title d'une iframe RGAA ?
Il décrit la nature du contenu que l’utilisateur trouvera s’il entre dans le cadre. Le title ne labellise pas les éléments internes de l’iframe, mais donne un aperçu de ce que le cadre contient. Le glossaire RGAA précise que le titre doit indiquer la « nature du contenu ». Exemple : title="Carte Google Maps : localisation de notre agence Paris 11e".