Pourquoi les cadres sont-ils obsolètes en HTML5, mais pas les iFrames?

67

Pourquoi les cadres sont-ils obsolètes en HTML5, mais pas les iFrames? Après tout, il n'y a presque pas de différence entre les deux. Dans de nombreux cas, l’utilisation de l’un ou de l’autre donnerait le même résultat (pardonnez-moi si je me trompe)?

Roc Martí
la source
merci pour le lien, mais quelle est la petite différence entre les deux, que les iframes ne sont pas obsolètes.
1
Parce que les cadres étaient une idée terrible dès le début mais que les iframes ont quelques cas d’utilisation légitimes?
GordonM

Réponses:

81

Il y a quelques idées fausses dans votre message. Premièrement, les éléments frameet framesetne sont pas obsolètes en HTML5, ils sont obsolètes (ils ont donc été entièrement supprimés).

Deuxièmement, les éléments frameet framesetne sont pas la même chose que l' iframeélément et ne donnent pas le même résultat:

  • L' framesetélément remplace l'élément body dans les pages en tant que moyen d'inclure un modèle de document différent pour les pages Web: ils sont nuisibles à la convivialité et à l'accessibilité, et ce qu'ils visaient à accomplir a été complètement remplacé par CSS et le développement omniprésent côté serveur.

  • L' iframeélément, en revanche, ne remplace pas le corps d'une page. Il s'agit d'un moyen d'inclure un nouveau contexte de navigation intégré dans un bloc de contenu. Il ne souffre pas des mêmes problèmes d'utilisation et d'accessibilité que le modèle de jeu de cadres et est utilisé presque partout où il est nécessaire d'inclure un contexte de navigation intégré (les widgets étant l'exemple le plus prolifique). 1

Le iframeHTML5 prend également des fonctionnalités supplémentaires dans la mesure où il peut être mis en sandbox , permettant au document parent de décider de ce qui sera exécuté en son sein. Cela permet une certaine sécurité pour le document parent (et les visiteurs du document parent) lors de l'incorporation de contenu non approuvé.


Remarques

Remarque 1: l' objectélément chevauche quelque peu l' iframeélément, mais il a un modèle de contenu différent (qui est principalement destiné aux plug-ins), a son propre ensemble d'avertissements et ne possède pas les attributs de sandboxing de l' iframeélément.


la source
8
Pourquoi les éléments de jeu de cadres sont-ils mauvais pour "l'utilisabilité" et "l'accessibilité", alors que les éléments iframe ne le sont pas?
Meriton - en grève le
18
@meriton Le jeu de cadres crée une page à partir de plusieurs documents ayant tous la même priorité: cela pose des problèmes aux lecteurs d'écran qui ne savent pas sur quel document se concentrer à un moment donné. Les éléments Iframe, en revanche, sont simplement incorporés dans une seule page: ce n'est pas différent d'avoir une image incorporée.
9
Défis pour les lecteurs d'écran: Les personnes aveugles avec lesquelles j'ai parlé ont toutes déclaré qu'elles préféraient que la navigation soit bloquée dans un cadre séparé (pas iFrame) car elles pouvaient l'ignorer et ne la lire que quand elles le voulaient. Le vrai coupable pour les lecteurs d’écran est Javascript et AJAX, ce qui rend les pages totalement inutilisables avec les lecteurs d’écran actuels (eh bien, mon information date d’environ 10 mois). Mon expérience personnelle avec les lecteurs d'écran le supporte.
GlenPeterson
4
Je me demandais si nombre d'affirmations d'accessibilité souvent remotées de 2005 n'étaient pas en retard pour une mise à jour. Merci pour la dissidence à ce sujet.
Erik Reppen
1
@GlenPeters sur le même effet sans élément de cadre peut être obtenu en utilisant CSS pour fixer l'élément de bloc dans la fenêtre d'affichage. C’est COMMENT, cela devrait être fait si vous voulez ce type de navigation. Cela a plus de sens.
netrox
8

Les cadres (frameset) font office de document. Il est supprimé car il casse la structure et la navigation des documents HTML. Par exemple. vous avez des liens dans un cadre, du contenu dans l'autre, vous ne pouvez pas ouvrir le lien de la page dans une nouvelle fenêtre, vous ne pouvez pas créer de lien vers une sous-page spécifique, etc.

D'autre part, les iframes ne cassent rien s'ils sont utilisés correctement car ils sont destinés au contenu en mode bac à sable (par exemple, les annonces).

Slawek
la source
7

Les jeux de cadres sont souvent utilisés de manière à briser le principe fondamental du Web, à savoir que chaque document a une URL unique. Cela pose des problèmes de liens, de signets, de moteurs de recherche, etc.

L'utilisation typique d'un jeu de cadres est un cadre en haut avec un logo ou un en-tête, un cadre sur le côté avec un menu et un cadre de contenu. Mais les moteurs de recherche indexent des pages individuelles. Ainsi, lorsque vous trouvez une page dans Google, elle renvoie directement à la page de contenu sans le jeu de cadres, ce qui vous fait perdre la navigation. Le problème avec les liens et les signets est que vous voudriez généralement lier ou mettre en signet une page de contenu particulière à l'intérieur du jeu de cadres, sans perdre le jeu de cadres lui-même. Le n'est pas un moyen facile de le faire.

La raison pour laquelle les framesets sont devenus populaires en premier lieu était parce qu'ils permettaient un en-tête et un menu positionnés de manière statique avec une zone de contenu défilante. Mais cela peut être réalisé beaucoup plus facilement avec CSS aujourd'hui. De plus, les cadres vous permettaient d'utiliser des éléments communs tels que les logos et les menus sur plusieurs pages sans utiliser de codage côté serveur. C'était un avantage à une époque où le codage côté serveur était fastidieux et sujet aux erreurs (c'est-à-dire les scripts CGI), et de nombreux hôtes n'autorisaient pas du tout la génération de scripts côté serveur. Aujourd'hui, avec les systèmes de gestion de contenu (CMS) et de meilleures plates-formes côté serveur, cette tâche est beaucoup mieux gérée du côté serveur.

Donc, en gros, utiliser un jeu de cadres ne présente aucun avantage, mais beaucoup de problèmes.

Les IFrames peuvent être utilisés de la même manière que les jeux de cadres, et dans ce cas, ils posent également les mêmes problèmes. Mais il existe également de nombreuses utilisations légitimes des iframes qui ne posent pas les mêmes problèmes.

JacquesB
la source