30 votes

Les iframes sont-ils une terrible idée?

Je crée un widget et j'utilise des iframes pour présenter du contenu. À un moment donné, je pourrais commencer à servir du HTML et du JS tiers, alors j'ai pensé que les iframes seraient une bonne idée.

Cela rend le widget javascript un peu plus compliqué, et je crains que ce ne soit pas la meilleure implémentation.

Avez-vous des conseils? Ce serait d'une grande aide d'entendre ce que les autres pensent des iframes.

24voto

Zach Points 9869

Non, rien de mal avec les iframes. Les iframes sont probablement une meilleure idée si vous souhaitez commencer à diffuser du contenu tiers.

La prochaine spécification HTML5 prévoit également d'intégrer plus de fonctionnalités de sécurité dans les iframes pour des situations comme celle-ci, donc je considérerais que c'est une bonne pratique de les utiliser maintenant également.

11voto

Evgeny Points 156

Avant de XMLHTTPRequest est devenu très largement utilisé, les gens ont été en utilisant une combinaison de JavaScript et des iframes pour servir du contenu de manière dynamique, sans la réalisation complète de la page est rafraîchie.

Il y a beaucoup d'informations sur le développement de sites de cette façon, vous devriez donc avoir une relativement facile de trouver une solution de contournement à beaucoup de sur les inconvénients que vous êtes susceptible de frapper.

La seule chose que j'ai trouvé pour être une douleur est inter-domaine d'utilisation de JavaScript dans les iframes. Si la page vous intégrer dans l'iframe est à partir d'un autre domaine que le "parent" de la page, les navigateurs ont des restrictions de sécurité contre vous permettant d'accéder à l'un de l'autre. Le truc, c'est pour les deux pages de déclarer

document.domain = 'somedomain.com';

Il y a beaucoup de trucs sur le Web à propos de ce genre de solution de contournement.

Bonne chance!

8voto

Brian MacKay Points 10483

Une chose que j'ai découvert récemment, c'est que .pages aspx incorporé à l'intérieur iframes ont parfois des problèmes de perte de cookies, ce qui a conduit à la perte de l'état de session dans une application, j'ai été impliqué avec.

Pour moi, c'était dans un scénario où un développement différent de la boutique a été la consommation de l'un de mes .pages aspx dans leur propre page. Cela signifie que nous avons été séparées sur les serveurs, qui peuvent ou peuvent ne pas être importantes.

Apparemment, cela a été causé par le parent de la page de rejeter les cookies de la page enfant... où va le cookie de session, ainsi va la session.

Les mécanismes spécifiques de la façon dont cela fonctionne sont un peu impliquées: Plus de Détails

Ce problème n'a pas d'impact sur FireFox, mais il a démontré jusqu'à IE7 et c'était un véritable mystère pour quelques heures.

Aussi, j'ai contredire l'article que j'ai lié ci-dessus sur un point. L'article dit que vous ne recevez pas cette si la page qui les contient est aussi une .aspx... Dans ce cas, ce n'était pas vrai parce que les deux pages ont été .aspxs.

Qui jette le doute sur tout le reste de l'article dit au sujet de cette situation, mais il l'a fait conduire à une résolution, de sorte que c'est quelque chose d'aussi bien.

Comme l'article le suggère, je l'ai mis dans le code suivant, qui injecte un p3p (Privacy Preferences Project - je n'avais jamais entendu parler) en-tête de la page de l'événement Init:

HttpContext.Current.Response.AddHeader("p3p", "CP=\""IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT\""")

...Et qui a résolu le problème.

6voto

Mike B Points 6275

Je vais être en désaccord avec la majorité et dire que oui, les iframes sont absolument terrible idée. Toute personne qui a travaillé dans la Conception de sites Web communautaires pour un certain temps sera d'accord que les iframes sont mal pur et doit être évitée sauf si ABSOLUMENT essentiel.

Mes raisons de croire qu'elles sont mauvaises c'est parce qu'ils se cassent la navigation modèle d'une page web. À l'aide d'un iframe, vous pouvez briser efficacement les boutons précédent et suivant sur les navigateurs et de confondre vos utilisateurs. Il rompt l'ensemble de l'idée derrière le protocole HTTP; qu'une URL sera toujours conduire à un emplacement unique. Si l'iframe ont été un cheval qu'il serait à la retraite il y a longtemps. Il y a d'autres façons de servir du contenu de manière dynamique, et ces derniers devraient être utilisés à la place.

Si vous êtes à la création d'un widget , puis les préoccupations immédiates avec l'aide iframes disparaître (mauvais pour les Moteurs de Recherche, c'est dommage pour les Signets, etc), mais de toute façon le contenu serait mieux servi dynamique, ou même dans une nouvelle fenêtre plutôt que dans un iframe.

5voto

scunliffe Points 30964

Il n'y a qu'un seul "vraiment mauvais" chose avec eux que je suis au courant.

Si votre 3ème partie fait un peu de JavaScript, qui tente de modifier leur DOM un peu trop tôt... IE6 et IE7 va lancer la oh si peu serviable "Opération Annulée" s'affiche, puis vide non seulement l'iframe, mais l'ensemble de l'environnant de la page. (par exemple, votre site s'affiche en bas)

Il n'est pas fixe dans IE8, mais l'accident est mieux géré.

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