93 votes

Pourquoi les gens utilisent-ils encore des iframes ?

Pour moi, les iframes sont le mal absolu (enfin, peut-être pas si absolu que ça). Ils semblent causer beaucoup de problèmes. Oui, tout votre site sera chargé une fois et vous pourrez ensuite charger des pages individuelles. Mais les gens ont inventé AJAX dans ce but.

Un des plus gros problèmes que j'ai trouvé avec iframe c'est que je ne pouvais pas coller un lien vers l'une des sous-pages, car l'URL ne changeait jamais (oui, je sais qu'il existe une solution de contournement pour cela). Deuxièmement, les moteurs de recherche web peuvent avoir des problèmes pour indexer de telles pages.

Parfois, l'accessibilité de ces sites est moins bonne et certains navigateurs peuvent même les afficher de manière incorrecte.

Il existe de meilleures façons de concevoir des mises en page sans iframes. Tous les jours, je vois quelqu'un poser des questions à l'OS, comme "Comment accéder aux iframes avec jQuery ?".

Quels sont donc les avantages des iframes ? Quelle raison peut-il y avoir de continuer à les utiliser ? Je voudrais simplement savoir pourquoi.

0 votes

Je suis d'accord avec Moshe ci-dessus. La seule autre utilisation des Iframes est pour : les anciens clients web qui ne supportent pas les CSS modernes ou dans un environnement propriétaire.

0 votes

De nos jours, malheureusement, tous les navigateurs ont un problème de compatibilité ! ils ne sont pas standard ! la balise div a un problème, la balise table a un problème et ainsi de suite... ils nous font perdre du temps pour concevoir un site web 100% compatible. parfois la dernière façon de rendre un site web compatible même avec IE7. est d'utiliser un iframe. l'iframe peut corriger tous les problèmes :'( si vous vérifiez le statut de mon site web, vous verrez beaucoup de visites provenant d'IE7. beaucoup de gens utilisent de vieux navigateurs même en 2016 ! !!

105voto

Dan Beam Points 2045

Je peux penser à deux raisons (pour le moment) pour lesquelles les gens continueraient à utiliser des iframes au lieu d'AJAX :

1) Les iframes contournent la politique d'origine interdomaine (les images, les scripts et les styles ne le font pas). Cela peut être utile pour tirer des sites / contenus d'autres noms de domaine de manière relativement sûre. Fondamentalement, cela permet l'avantage de pouvoir montrer visuellement des données provenant d'autres domaines sans les laisser piétiner toute votre page avec un accès illimité (comme quelque chose comme JSONP serait en mesure de le faire).

2) Vous pouvez charger plusieurs types de ressources à partir d'une iframe, et pas seulement certains types de mime (vous êtes relativement limité à application/javascript, application/x-javascript, text/css, text/xml, image/png, image/jpeg, image/gif avec scripts, XHR, images et sources). Par exemple, si je veux vous montrer un PDF, je peux ouvrir une iframe et laisser le plugin Adobe Reader vous montrer ce fichier. En outre, dans le même domaine, si je veux canaliser un scripts, un style et une image tous ensemble (en ligne sur la page, l'image devrait être une URI de données), je peux le faire avec un iframe (et si c'est dans le même domaine, port et protocole, je peux y accéder avec JavaScript également).

Saviez-vous que Gmail est un ensemble d'iframes ? La partie visible n'est qu'un positionnement astucieux. En outre, de nombreuses implémentations d'OAuth (Twitter, Facebook, Google, Yahoo !) utilisent généralement des iframes pour associer un utilisateur de leur domaine à une URL d'authentification réussie (pour après que l'utilisateur se soit connecté).

2 votes

Re #1, Mais l'en-tête HTTP peut bloquer iframe.....

2 votes

Re #2, Mais vous pouvez le faire sans iframe, par exemple <embed src="http://www.pdf995.com/samples/pdf.pdf" type="application/pdf">

4 votes

Re #3, Gmail peut être réécrit sans iframes. Alors pourquoi les gens utilisent-ils encore les iframes pour les navigateurs modernes ? La question reste sans réponse.

24voto

gertas Points 7113

Les IFRAME sont utilisés pour intégrer et isoler du contenu tiers dans un site web.

La plupart des solutions de publicité sur le web sont basées sur les iframes, car elles offrent une sécurité (politique inter-domaines) et un rectangle isolé à l'écran qui peut être entièrement géré par du contenu et des scripts tiers (les publicités sont un cas d'utilisation courant).

Une autre utilisation moderne des IFRAMES est la gestion de l'historique (contournement commun du bouton retour) des applications AJAX.

Les FRAMEs sont une version pauvre des IFRAMES. Leur utilisation est en déclin.

1 votes

C'est beaucoup plus simple, et un bon exemple d'annonces :)

15voto

Reinderien Points 4529

Si un utilisateur a désactivé le javascript, les iframes fonctionneront alors que l'ajax ne fonctionne pas. Ce n'est pas hors de question, étant donné que les gens utilisent des choses comme NoScript .

4 votes

C'est vrai, mais la modification / l'ajout / la manipulation de l'iframe nécessite JavaScript dans la plupart des cas (à l'exception de deux cas auxquels je pense, à savoir les liens vers les cibles et les <form> l'affectation aux cibles).

0 votes

C'est vrai ; même si la modification de ce vers quoi pointe l'iframe à l'aide de JS ne nécessite généralement qu'une seule ligne, contrairement à la plus grande complexité de l'option XMLHttpRequest .

7voto

CodeReaper Points 1343

Je les utilise sur les sites Web ajax, lorsque j'ai besoin de télécharger des fichiers sans recharger la page.

3voto

bobince Points 270740

Il existe de nombreuses raisons techniques de les utiliser (notamment le problème de sécurité mentionné par Dan Beam).

Ce qu'il ne faut pas faire, c'est utiliser les iframes "comme des cadres", en effectuant la navigation vers de nouvelles pages en mettant à jour uniquement l'iframe. Comme vous l'avez dit, cela empêche la navigation de pouvoir être marquée d'un signet ou d'un lien, de répondre aux boutons de navigation normaux et d'offrir des possibilités de liens utiles comme l'ouverture d'un nouvel onglet.

Mais ce n'est pas propre aux iframes. On peut voir de plus en plus de pages où la navigation se fait en allant chercher du nouveau contenu à l'aide de XMLHttpRequest et l'écrire dans la div de contenu principal innerHTML . Cela se fait souvent avec jQuery load() et des animations glissantes intelligentes. Cela casse la navigation tout autant que les iframe-used-as-frame, ou les framesets de la vieille école. Il est dommage que tant d'auteurs Web utilisent cette tactique en croyant qu'il s'agit d'une méthodologie de conception Web super moderne, alors qu'il ne s'agit en fait que d'une nouvelle peau sur les framesets méprisés d'hier.

Vous pouvez contourner ce problème dans les deux cas, mais cela signifie que vous devez stocker un état de vue dans le fichier # et prendre en charge la navigation par hachage, ce qui n'est pas une mince affaire. Même dans ce cas, il y a toujours des problèmes avec les agents non-JS comme les moteurs de recherche. ? -et # -pour prendre en charge les deux. C'est pénible et la plupart des gens ne s'en soucient pas.

0 votes

Attendez avec impatience l'API d'historique dans HTML5, qui permettra de récupérer du contenu sans avoir à recharger ou à interrompre les boutons de retour en arrière ou d'avance.

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