Sont iframes considérés comme de "mauvaises pratiques"?
Quelque part le long de la ligne, j'ai ramassé la notion que l'utilisation des iframes est de "mauvaise pratique".
Est-ce vrai? Quels sont les avantages/inconvénients de leur utilisation?
Vous devez vous connecter pour publier un commentaire.
Comme avec toutes les technologies, il a ses hauts et ses bas. Si vous êtes en utilisant un iframe à me déplacer correctement développé le site, c'est une mauvaise pratique. Cependant, parfois un iframe est acceptable.
L'un des principaux problèmes avec un iframe a à faire avec des signets et de navigation. Si vous utilisez il suffit d'insérer une page à l'intérieur de votre contenu, je pense que c'est très bien. Qu'est ce qu'un iframe est pour.
Mais j'ai vu iframes abusé aussi. Il ne doit jamais être utilisé comme une partie intégrante de votre site, mais aussi un morceau de contenu au sein d'un site.
Habituellement, si vous pouvez faire sans une iframe, c'est une meilleure option. Je suis sûr que d'autres ici pourront avoir plus d'informations ou des exemples plus précis, il s'agit pour le problème que vous essayez de résoudre.
Avec cela dit, si vous êtes limité à HTML et n'ont pas accès à un back-end comme PHP ou ASP.NET etc, parfois un iframe est votre seule option.
window.postMessage()
, par exemple pour mettre en œuvre collaborative iframe auto-redimensionnement.Ils ne sont pas mauvaises pratiques, ils sont juste un autre outil et ils ajoutent de la souplesse.
Pour l'utiliser comme un standard de l'élément de la page... ils sont bons, parce qu'ils sont une manière simple et fiable de séparer le contenu sur plusieurs pages. Surtout pour le contenu généré par l'utilisateur, il peut être utile de "bac à sable" pages internes dans un
iframe
si pauvre balisage n'a pas d'incidence sur la page principale. L'inconvénient est que si vous introduisez plusieurs couches de défilement (l'un pour le navigateur, l'un pour laiframe
) vos utilisateurs deviennent frustrés. Comme adzm dit, vous ne voulez pas utiliser uniframe
pour la navigation principale, mais pensez comme un texte/majoration équivalente à la manière d'une vidéo ou d'un autre fichier multimédia serait intégré.Pour l'écriture de scripts d'arrière-plan des événements, le choix est généralement entre un caché
iframe
etXmlHttpRequest
pour charger le contenu de la page en cours. La différence n'est qu'uneiframe
génère un chargement de la page, donc vous pouvez vous déplacer en avant et en arrière dans la mémoire cache du navigateur avec la plupart des navigateurs. Notez que Google, qui utiliseXmlHttpRequest
tous sur la place, utilise égalementiframe
s, dans certains cas, pour permettre à un utilisateur de se déplacer en avant et en arrière dans l'historique du navigateur.C'est de "mauvaise pratique" de les utiliser sans la compréhension de leurs inconvénients. Adzm post résume très bien.
Sur le revers de la médaille, gmail utilise de façon intensive les iFrames dans l'arrière-plan de certains de il fait plus frais (comme le automatique de chargement de fichier). Si vous êtes conscients des limites de la iFrames je ne crois pas que vous devriez vous sentir aucun scrupule à les utiliser.
Avoir travaillé avec eux dans de nombreuses circonstances, j'en suis venu à penser que l'iframe sont la programmation web équivalent de l'instruction goto. C'est, quelque chose de généralement être évitée. Au sein d'un site, ils peuvent être un peu utile. Cependant, cross-site, ils sont presque toujours une mauvaise idée pour quelque chose, mais le plus simple de contenu.
Examiner les possibilités ... si elle est utilisée pour paramétrée contenu, ils ont créé une interface. Et dans un site professionnel, cette interface nécessite un contrat de service et de gestion de version - qui sont presque toujours ignorés dans la course pour arriver en ligne.
Si elle est utilisée pour le contenu actif - cadres de l'hôte de script - puis il y a les (différents) de la croix de domaine script restrictions. Certains peuvent être piraté, mais rarement de manière cohérente. Et si votre encadrée contenu a besoin d'être interactif, il aura de la difficulté à le faire en dehors du cadre.
Si utilisé avec le contenu sous licence, puis les sites participants sont accablés par le besoin de déplacer informations sur les droits de la bande entre les hôtes.
Ainsi, bien que, occaisionally utile au sein d'un site, ils sont plutôt inadapté pour les mashups. Vous feriez bien mieux de regarder réel, des portails et des portlets. Pire, ils sont un chouchou du web amateur - de nombreux gestionnaire de technologie a siezed sur eux comme une solution à de nombreux problèmes. En fait, ils créent plus.
Basé sur mon expérience, un côté positif pour iframe sont lors de l'appel de la troisième partie des codes, qui peut impliquer d'appeler un javascript qui appelle un a une
Document.write();
de commande. Comme vous le savez, ces commandes ne peuvent pas être appelée de façon asynchrone en raison de la façon dont elle est analysée (DOM Parser etc). Un exemple de ceci est http://sourceforge.net/projects/phpadsnew/ j'ai fait de l'utilisation des iframes pour aider à accélérer notre site, car il y avait de multiples appels à phpadsnews et le site a été en attente pour la réponse avant de procéder à rendre les différentes parties de la page. avec un iframe, j'ai pu permettre au site de rendre les autres parties de la page, et encore appeler laDocument.write()
commande de phpads de manière asynchrone. La prévention et la js verrouillage.Il y a certainement utilise pour iframes gens. Sinon, comment voulez-vous mettre la météo réseaux widget sur votre page? La seule autre façon est de prendre de leur XML et de l'analyser, mais bien sûr vous avez besoin de conditions de vomir les pertenant météo graphiques... pas vraiment la peine, mais de façon plus propre si vous avez le temps.
L'original frameset modèle (Frameset et Frame-éléments) ont été très mauvais d'un point de vue de l'utilisabilité. IFrame vas une invention ultérieure qui n'ont pas autant de problèmes que l'original jeu de cadres modèle, mais il a ses inconvénient.
Si vous permettre à l'utilisateur de naviguer à l'intérieur de l'IFrame, puis des liens et signets ne fonctionne pas comme prévu (parce que vous enregistrez l'URL externe de la page, mais pas l'URL de l'iframe).
Lorsque le principal de votre page se charge dans le protocole HTTP et les parties de votre page nécessité de travailler dans le protocole HTTPS, iFrame peut battre jsonp mains vers le bas.
En particulier, si votre type de données n'est pas nativement json et doit être traduite sur le serveur en json et traduits sur le client par ex. html complexe.
Donc non - iFrame n'est pas mal.
J'ai vu IFRAMEs appliqué avec beaucoup de succès comme un moyen facile de faire des menus contextuels, mais le public cible de cette web-app est seulement les utilisateurs d'Internet Explorer.
Je dirais que tout dépend de vos exigences. Si vous souhaitez vous assurer que votre page fonctionne aussi bien sur tous les navigateurs, éviter les IFRAMEs. Si vous visez une étroite et bien connus de l'auditoire (par exemple. sur l'Intranet local) et vous voyez un avantage à utiliser les IFRAMEs alors je dirais que c'est OK pour le faire.
Il est intéressant de noter que les iframes volonté, indépendamment de la vitesse de votre internet pour les utilisateurs de connexion ou le contenu de l'iframe, provoquer un petit (0,3 s) cependant ralentissement notable de la vitesse de votre page de téléchargements. Ce n'est pas quelque chose que vous verrez lors de l'essai à l'échelle locale. En fait, cela est vrai pour tout élément ajouté à une page, mais iframes semblent être pire.
Ils ne sont pas mauvais, mais en fait très utile. J'ai eu un énorme problème il y a quelques temps où j'ai eu à intégrer mon compte twitter et il ne serait pas juste de laisser md de le faire sur la même page, alors je l'ai mis sur une autre page, et le mettre dans un iframe.
Ils sont également bonnes, car tous les navigateurs (et navigateurs de téléphones) de les soutenir. Ils ne peuvent pas être considéré comme une mauvaise pratique, aussi longtemps que vous les utilisez correctement.