web-dev-qa-db-fra.com

Les IFrames (HTML) sont-elles obsolètes?

Recevoir des messages contradictoires à ce sujet, j'espère que non. Je ne peux pas imaginer que son soutien s'arrêterait, car des milliers de sites les utilisent.

Quelques questions supplémentaires à ce sujet:

  1. Pourquoi devraient-ils supprimer cette balise?
  2. Une alternative pour cela?
83
Peter

Dans mon opinion le W3C a sauté le pistolet en vidant les iframes des doctypes Strict HTML et XHTML. En théorie, vous utiliseriez le <object> élément pour ajouter des objets étrangers à votre document, mais les différences et les limitations du navigateur en ont fait un non-démarreur pour de nombreux développeurs. Avec le HTML 5 beaucoup plus pragmatique (qui est encore un brouillon), les iframes sont de retour et ont même deux nouveaux attributs: seamless, et l'intrigant sandbox.

49
David Kolar

Soutien <iframe> est toujours là dans HTML 5, donc je ne pense pas que cela va changer dans un proche avenir.

Pour répondre à vos autres questions:

  1. <iframe>s (en tant que cadres en général) ne sont généralement pas conviviaux:
    • Ils ne permettent pas d'accéder facilement au contenu du cadre via une URL (sans perdre au moins le contenu en dehors du cadre).
    • La plupart des utilisateurs "technophobe" sont irrités par les frames.
    • Pour autant que je sache, leur rendu est plus lent pour les navigateurs
  2. Les alternatives incluent la génération de page dynamique (SSI, PHP, Rails et ainsi de suite) et l'utilisation de JavaScript/AJAX pour modifier le contenu, par exemple, d'un <div>

Pour être clair: je parle de <iframe> comme élément d'interface. Pas un élément caché pour charger d'autres choses comme par exemple Google Mail le fait.

74
Koraktor

Les IFrames ne sont pas obsolètes, mais les raisons de les utiliser sont rares.

Raisons d'utiliser des iframes:

  • C'est génial pour isoler les contenus d'autres personnes d'autres domaines, mais il ne s'intègre pas facilement. (feuilles de style, javascript etc ...)
  • L'intégration du multimédia peut parfois être plus facile via une iframe que d'utiliser la balise embed.
  • Vraiment, des cas vraiment spécialisés comme le cas de gmail où ils l'utilisent pour la gestion des sons et de l'historique.

Je répondrais également qu'il n'est pas nécessaire de supprimer les iframes, c'est une balise nécessaire et sera là pendant un certain temps.

23
cgp

Iframes sont obsolètes pour la mise en page. Ne les utilisez jamais au lieu d'une bonne mise en page CSS, même une mise en page basée sur des tableaux est meilleure.

Les bonnes raisons d'utiliser les iframes sont:

  • ads: adwords par exemple utilise cette technique, c'est bon pour l'encapsulation - les css publicitaires ne détruiront pas votre page.
  • iframe caché: il peut être utilisé pour des centaines de choses utilisables, comme le tracking, ajax-alternative, etc.
23
Thinker

J'ai vu beaucoup de forums qui suggèrent la balise Object en remplacement de IFrame, qui fonctionne probablement dans la plupart des cas.

Par exemple, j'avais un PDF montrant dans un IFrame (car il y avait d'autres choses que nous devons montrer sur la page en plus du PDF)) et j'ai pu le faire afficher correctement en utilisant Object.

Quel était:

<iframe id="confirmed_pdf" class="current_pdf" src="/prescriptions/show_pdf?id=123" height="570" width="480"></iframe>

Est devenu:

<object id="confirmed_pdf" class="current_pdf" data="/prescriptions/show_pdf?id=123" type="application/pdf" height="570" width="480">
  <p>[Show this message if displaying the PDF did not work]</p>
</object>

Mais Object n'était pas un remplaçant approprié pour remplir l'exigence de pouvoir imprimer UNIQUEMENT la partie PDF de la page.

Un IFrame est comme sa propre fenêtre dans la page (une fenêtre dans une fenêtre, en gros), et une fois que vous obtenez l'objet fenêtre, vous pouvez appeler .print () dessus, comme:

jQuery("#confirmed_pdf").contentWindow.print();

IFrame a une propriété contentWindow, c'est ce qui rend possible l'impression uniquement de cette partie. L'objet n'a pas de propriété contentWindow, il n'y a donc aucun moyen d'imprimer uniquement la section de la page.

Donc, il semble que si vous utilisez simplement IFrame pour afficher quelque chose, il existe d'autres balises comme Object qui peuvent être utilisées à la place. Mais si vous devez interagir avec le contenu de l'IFrame de certaines manières, l'IFrame peut être nécessaire.

12
Gayle

IFrames ne sont pas morts, mais Frameset/Frames meurent.

Dans les 2 dernières versions de C'EST-À-DIRE (IE7/IE8), le zoom dans les cadres (pas les IFrames) a créé des résultats désastreux.

Bien sûr, utilisez des IFrames, mais à mon humble avis, évitez les jeux de cadres/cadres.

7
scunliffe

Les IFrames sont beaucoup utilisées avec AJAX. Par exemple, GMail utilise neuf IFrames cachées.

7
John Topley

Dans mon entreprise précédente, nous avons fourni une application hébergée que les clients intégreraient à leurs propres sites Web. Parfois, ils utilisaient un IFrame pour ce faire, adaptant notre page hébergée à leurs conceptions existantes. Parfois, cela a même été fait de manière transparente (c'est-à-dire que l'IFrame n'avait pas de bordures ou de barres de défilement, il ressemblait simplement à une partie de la page). J'ai considéré que c'était une bonne utilisation de la balise.

5
Joshua Carmody

Les chevaux pour les cours ... les <iframe> sont comme tout le reste ... dans le bon but, ils sont le bon outil; dans le mauvais but, ils sont un vilain hack, ou pire.

Dans Ajax, les <div> sont souvent le conteneur le plus approprié. Dans certains endroits, l'activité consistant à faire passer du contenu externe dans le cadre de votre propre site, comme le soutiennent les <iframe>, est inappropriée.

Mon équipe a utilisé un <iframe> l'autre jour comme moyen idéal pour donner aux utilisateurs l'accès à leur historique de messagerie HTML - les e-mails étaient des pages <html> complètes que nous voulions insérer facilement dans notre modèle Web. Les <iframe> étaient absolument parfaits pour présenter ces données] '.

D'un autre côté, les <iframe> devraient presque toujours être supprimés ou désactivés dans tout contenu soumis par l'utilisateur qui est renvoyé sur le site, car dans ce contexte, il s'agit d'un problème de sécurité majeur.

5
tsuchan

Ils peuvent être extrêmement utiles dans certaines circonstances, mais ils sont limités. En particulier, l'intégration de fonctionnalités communes sur plusieurs sites.

Par exemple, j'ai un client qui gère un certain nombre de sites de commerce électronique écossais. Dans le cadre de cela, nous avons développé quelques applications simples pour localiser les noms de clan possibles à partir de votre nom de famille ou de votre choix de tartans (riez si vous le souhaitez mais les tartans valent 700 millions de dollars par an pour notre économie). La base de données derrière cela est étonnamment grande (près de dix mille lignes dans les noms de base et les tables de tartans) et assez régulièrement mise à jour.

Nous avons donc les applications configurées pour fonctionner sur un site Web, puis intégrées à celles-ci dans nos autres sites Web à l'aide d'un iframe, permettant le passage simple de paramètres javascript afin que nous puissions intégrer la sélection d'un tartan ou d'un clan avec des fonctionnalités sur le site d'intégration. L'iframe est défini comme noborder donc il apparaît complètement transparent pour l'utilisateur final.

Bien sûr, il y aurait d'autres façons de le faire, mais l'utilisation d'un iframe est simple et robuste. Et ce n'est certainement pas obsolète.

5
Cruachan

La spécification du gadget Google repose actuellement sur des iframes: http://code.google.com/apis/gadgets/docs/spec.html

Actuellement, ils sont le seul moyen simple d'assurer l'isolement des applications javascript qui sont extraites de plusieurs domaines/fournisseurs.

De nombreux widgets que les gens intègrent sur leurs sites Web à partir de tiers utilisent également des iframes.

Bien qu'ils aient leurs inconvénients, les iframes fournissent une solution pragmatique aux problèmes courants sur le Web. Je dois deviner qu'ils seront là pour un certain temps.

4
Jason

Les problèmes de conformité et de sécurité peuvent également vous inciter à utiliser les iframes; Les paniers sont des implémentations populaires basées sur IFrame lorsque vous souhaitez incorporer visuellement un panier dans certaines pages Web sans assumer l'entière responsabilité du traitement des paiements.

Nous livrons généralement un Iframe pour intégrer nos produits de commerce électronique et nos clients, comme la clé en main.

2
quolo

Je viens de changer un site d'un Frameset normal en Iframes car les frames normales ne pouvaient pas faire ce dont j'avais besoin. Cela n'a causé aucun problème avec le reste de la base de code.

2
Valerion

Je travaille pour une entreprise qui a utilisé des cadres pour tout, des menus déroulants, des listes, des blocs de contenu, etc. juste pour couvrir les subtilités des formulaires Web .net. L'application est très lente et ne fonctionne que sur IE. Ne fais pas ça.

0
Lovemossnot