web-dev-qa-db-fra.com

Pourquoi les cadres sont-ils déconseillés en HTML5, mais pas les iFrames?

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

68
user52009

Il y a quelques idées fausses dans votre message. Tout d'abord, les éléments frame et frameset ne sont pas obsolètes en HTML5, ils sont obsolètes (c'est-à-dire qu'ils ont été entièrement supprimés).

Deuxièmement, les éléments frame et frameset ne sont pas la même chose que l'élément iframe, ni ne donnent la même sortie:

  • L'élément frameset remplace l'élément body dans les pages afin d'inclure un modèle de document différent pour les pages Web: ils sont mauvais pour la convivialité et l'accessibilité, et ce qu'ils avaient l'intention d'accomplir ont été complètement remplacés par CSS et omniprésents développement côté serveur.

  • En revanche, l'élément iframe ne remplace pas le corps d'une page. Il agit comme 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 de convivialité ou d'accessibilité que le modèle de jeu de cadres et est utilisé presque partout où l'on doit inclure un contexte de navigation intégré (les widgets étant l'exemple le plus prolifique).1

Le iframe en HTML5 prend également des fonctionnalités supplémentaires en ce qu'il peut être bac à sable , permettant au document parent de décider ce qui sera exécuté en son sein. Cela permet une certaine sécurité du document parent (et des visiteurs du document parent) lors de l'incorporation de contenu non approuvé.


Remarques

Note 1: l'élément object chevauche quelque peu l'élément iframe, mais il a un modèle de contenu différent (qui est principalement destiné aux plugins), a son propre ensemble d'avertissements et n'a pas le sandboxing attribue l'élément iframe.

81
user8

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

L'utilisation typique d'un jeu de cadres serait 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, donc lorsque vous trouvez une page dans Google, elle sera directement liée à la page de contenu sans le jeu de cadres, de sorte que vous perdez 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. Ce n'est pas un moyen facile de le faire.

La raison pour laquelle les jeux de cadres sont devenus populaires en premier lieu était qu'ils permettaient un en-tête et un menu positionnés statiquement 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 ont permis d'utiliser des éléments communs comme des logos et des 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 les scripts côté serveur. Aujourd'hui, avec les systèmes de gestion de contenu (CMS) et les meilleures plates-formes côté serveur, cela est beaucoup mieux géré du côté serveur.

Donc, fondamentalement, il n'y a aucun avantage à utiliser un jeu de cadres, juste beaucoup de problèmes.

IFrames peut être utilisé de la même manière que les framesets ont été utilisés, et dans ce cas, ils entraînent également les mêmes problèmes. Mais il existe également de nombreuses utilisations légitimes des iframes qui ne conduisent pas aux mêmes problèmes.

8
JacquesB

Cadres (frameset) sert de document. Il est supprimé car il rompt 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 depuis la page dans une nouvelle fenêtre, vous ne pouvez pas créer de lien vers une sous-page spécifique, etc.

D'un autre côté, les iframes ne cassent rien s'ils sont utilisés correctement car ils sont destinés à sandboxer du contenu (par exemple, des publicités).

8
Slawek