86 votes

Sont les IFrames (HTML) obsolète?

Obtenir des messages contradictoires à ce sujet, j'espère qu'ils ne le sont pas. Je ne peux pas imaginer le soutien d'arrêter, car une foule de sites de les utiliser.

Quelques questions supplémentaires à ce sujet:

  1. Pourquoi devraient-ils en phase de cette balise?
  2. Toute autre alternative?

75voto

Koraktor Points 9532

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

Pour répondre à vos autres questions:

  1. <iframe>s (comme des images en général) sont la plupart du temps, pas convivial:
    • Ils ne permettent pas un accès facile au contenu de l'image via une URL (sans perdre le contenu à l'extérieur de l'image au moins).
    • La plupart des "technophobe" les utilisateurs sont irritées par des cadres.
    • Autant que je sache, ils sont plus lentes à rendre pour les navigateurs
  2. Alternatives comprennent la dynamique de génération de la page (SSI, PHP, Rails et ainsi de suite) et à l'aide de JavaScript / AJAX pour changer le contenu, par exemple, l' <div>

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

51voto

David Kolar Points 2727

À mon avis, le W3C a sauté le pistolet dans dumping iframes du Strict HTML et XHTML doctypes. En théorie, vous pourriez utiliser l' <object> élément à ajouter des objets étrangers à votre document, mais le navigateur différences et les limites en ont fait un nonstarter pour de nombreux développeurs. Avec le beaucoup plus pragmatique HTML 5 (qui est encore un projet), les iframes sont de retour et ont même deux nouveaux attributs: seamless, et l'intrigante sandbox.

24voto

Thinker Points 7239

Les Iframes sont obsolètes pour la mise en page. Ne jamais les utiliser au lieu de la bonne mise en page CSS, même basée sur la table de mise en page, c'est mieux.

De bonnes raisons pour utiliser les iframes sont:

  • annonces: adwords par exemple, utilise cette technique, il est bon pour l'encapsulation - ad css ne sera pas détruire votre page.
  • iframe masqué: il peut être utilisé pour des centaines utilisable choses, comme le suivi, ajax-alternative, etc.

23voto

altCognito Points 23944

IFrames ne sont pas obsolètes, mais les raisons de leur utilisation sont rares.

Raisons pour l'utilisation d'iframe:

  • Il est idéal pour cloisonner autres choses dans d'autres domaines, mais il ne veut pas s'intégrer en douceur. (les feuilles de style, javascript etc...)
  • L'intégration multimédia peut parfois être fait plus facile via iframe, par opposition à l'aide de la balise embed.
  • Vraiment, vraiment spécialisé des cas comme gmail cas où ils l'utilisent pour les sons et la gestion de l'historique.

Je voudrais également répondre qu'il n'est pas nécessaire pour le retrait des iframes, c'est un besoin de la balise et sera autour pendant un certain temps.

12voto

Gayle Points 1533

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

Par exemple, j'ai eu un PDF montrant dans une IFrame (parce qu'il y avait d'autres choses dont nous avons besoin à afficher sur la page d'ailleurs que le PDF) et a été en mesure de l'obtenir à l'écran fine à l'aide de l'Objet.

Ce qui a été:

<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 l'Objet n'était pas un substitut approprié pour remplir l'exigence d'être en mesure d'imprimer UNIQUEMENT les PDF partie de la page.

Une IFrame est comme sa propre fenêtre à l'intérieur de la page (une fenêtre dans une fenêtre, essentiellement), et une fois que vous obtenez la fenêtre de l'objet, vous pouvez l'appeler .print (), comme:

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

IFrame a un contentWindow bien, c'est ce qui donne l'impression que la partie possible. L'objet n'a pas une contentWindow propriété, donc il n'y a aucun moyen de l'impression, seule la section de la page.

Donc, il semble comme si vous êtes tout simplement à l'aide d'une IFrame pour afficher quelque chose, il y a d'autres balises comme Objet qui peut être utilisé à la place. Mais si vous avez besoin d'interagir avec le contenu de l'IFrame d'une certaine façon, puis IFrame peut être nécessaire.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X