Sind IFrames (HTML) veraltet? [geschlossen]

87

Wenn Sie widersprüchliche Nachrichten darüber erhalten, hoffen Sie, dass dies nicht der Fall ist. Ich kann mir nicht vorstellen, dass die Unterstützung dafür aufhören würde, da eine Unmenge von Websites sie nutzen.

Einige zusätzliche Fragen dazu:

  1. Warum sollten sie dieses Tag auslaufen lassen?
  2. Irgendeine Alternative dafür?
Peter
quelle

Antworten:

51

Meiner Meinung nach hat das W3C beim Dumping von Iframes aus den Strict HTML- und XHTML-Doctypes die Waffe gesprungen. Theoretisch würden Sie das <object>Element verwenden, um Ihrem Dokument Fremdobjekte hinzuzufügen, aber Browserunterschiede und -einschränkungen haben dies für viele Entwickler zu einem Nichtstarter gemacht. Mit dem viel pragmatischeren HTML 5 (das immer noch ein Entwurf ist) sind iframes zurück und haben sogar zwei neue Attribute: seamlessund das faszinierende sandbox.

David Kolar
quelle
Genial, ich hoffe nur, dass Browser anfangen, AJAX-Datei-Uploads zu unterstützen, sodass wir dafür weder Iframes noch Flash verwenden müssen.
Xeoncross
@Xeoncross Firefox und Chrome tun: developer.mozilla.org/en/Using_files_from_web_applications
jches
2
Update: Das semless-Attribut wurde aus HTML5 entfernt. Siehe: caniuse.com/#feat=iframe-seamless
Gabe
75

Die Unterstützung für <iframe>ist in HTML 5 immer noch vorhanden, daher denke ich nicht, dass sich dies in naher Zukunft ändern wird.

So beantworten Sie Ihre anderen Fragen:

  1. <iframe>s (als Frames im Allgemeinen) sind meistens nicht benutzerfreundlich:
    • Sie ermöglichen keinen einfachen Zugriff auf den Inhalt des Frames über eine URL (ohne den Inhalt zumindest außerhalb des Frames zu verlieren).
    • Die meisten "technophoben" Benutzer sind durch Frames irritiert.
    • Soweit ich weiß, sind sie für Browser langsamer zu rendern
  2. Zu den Alternativen gehören die dynamische Seitengenerierung (SSI, PHP, Rails usw.) und die Verwendung von JavaScript / AJAX zum Ändern des Inhalts von z <div>

Um es klar auszudrücken: Ich spreche von <iframe>einem Schnittstellenelement. Kein verstecktes Element zum Laden anderer Inhalte wie z. B. Google Mail.

Koraktor
quelle
29
+1 für den Punkt, dass Google Iframes für hochspezialisierte Zwecke verwendet.
CGP
24

Iframes sind für das Seitenlayout veraltet . Verwenden Sie sie niemals anstelle eines guten CSS-Layouts, auch ein tabellenbasiertes Layout ist besser.

Gute Gründe für die Verwendung von Iframes sind:

  • Anzeigen : AdWords verwendet zum Beispiel diese Technik. Sie eignet sich gut zum Einkapseln. Ad CSS zerstört Ihre Seite nicht.
  • versteckter Iframe : Er kann für Hunderte verwendbarer Dinge verwendet werden, wie Tracking, Ajax-Alternative usw.
Denker
quelle
35
*** Verwenden Sie keine Iframes für AdWords, da dies eine Verletzung der Nutzungsbedingungen darstellt. *** scribd.com/doc/97655/…
cgp
37
altCognito: AdWords verwendet Iframes, nicht ich :) Ich wollte nicht Adword Iframe in einen anderen Iframe einfügen.
Denker
7
Ich weiß, dass es ein häufiger Fehler ist (daher alle Artikel), deshalb wollte ich ihn markieren, um sicherzustellen, dass die Leute verstehen, was Sie gesagt haben.
CGP
5
Iframes sind ein Muss, wenn komplizierte Inhalte enthalten sind, die von einer anderen Domain bereitgestellt werden müssen, und dürfen nicht mit dem CSS- oder JS-Code der aktuellen Seite bearbeitet werden.
vsync
4
Was du redest, hat nichts mit Iframes zu tun. Punkt ist - Sie verwenden einen Iframe, um einen verschachtelten externen Browserkontext einzufügen. Sie verwenden es nicht für das Seitenlayout. Wenn ich einen verschachtelten Browserkontext benötige - wie in aller Welt würde ich stattdessen "gutes CSS-Layout" verwenden? Es macht keinen Sinn.
Chris B
23

IFrames sind nicht veraltet, aber die Gründe für ihre Verwendung sind selten.

Gründe für die Verwendung von Iframes:

  • Es ist großartig, um die Sachen anderer Leute von anderen Domänen abzuschirmen, aber es lässt sich nicht reibungslos integrieren. (Stylesheets, Javascript etc ...)
  • Die Integration von Multimedia kann manchmal einfacher über einen Iframe erfolgen als über das Embed-Tag.
  • Wirklich, wirklich spezialisierte Fälle wie der Fall von Google Mail, in dem sie für die Verwaltung von Sounds und Verlaufsdaten verwendet werden.

Ich würde auch antworten, dass es nicht notwendig ist, Iframes zu entfernen, es ist ein benötigtes Tag und wird für eine Weile da sein.

cgp
quelle
12

Ich habe viele Foren gesehen, die das Object-Tag als Ersatz für IFrame vorschlagen, was wahrscheinlich in den meisten Fällen funktioniert.

Zum Beispiel hatte ich eine PDF-Datei in einem IFrame (weil neben der PDF-Datei noch andere Dinge auf der Seite angezeigt werden mussten) und konnte sie mithilfe von Object gut anzeigen.

Was war:

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

Wurden:

<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>

Object war jedoch kein geeigneter Ersatz, um die Anforderung zu erfüllen, NUR den PDF-Teil der Seite drucken zu können.

Ein IFrame ähnelt einem eigenen Fenster innerhalb der Seite (im Grunde genommen einem Fenster innerhalb eines Fensters). Sobald Sie das Fensterobjekt erhalten haben, können Sie .print () darauf aufrufen, z.

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

IFrame hat eine contentWindow-Eigenschaft, die das Drucken nur dieses Teils ermöglicht. Das Objekt verfügt nicht über eine contentWindow-Eigenschaft, sodass nicht nur der Abschnitt der Seite gedruckt werden kann.

Wenn Sie also nur IFrame verwenden, um etwas anzuzeigen, gibt es andere Tags wie Object, die stattdessen verwendet werden können. Wenn Sie jedoch auf bestimmte Weise mit dem Inhalt des IFrames interagieren müssen, ist möglicherweise IFrame erforderlich.

Gayle
quelle
7

IFrames werden häufig mit AJAX verwendet. GMail verwendet zum Beispiel neun versteckte IFrames, glaube ich.

John Topley
quelle
5
Ich zähle fünf Iframes. Einer ist nicht verborgen, und tatsächlich ist einer von ihnen fast die gesamte Ansicht. IFrames werden normalerweise nicht mit Ajax verwendet (ohnehin nicht in einem der wichtigsten Frameworks). Google Mail verwendet Iframes für Dinge wie: Verlaufsverfolgung, Ton (ungerade) und eine Art Leinwandzeichnung.
CGP
Ich habe gerade einen Artikel gelesen, den ich vor ein paar Jahren gelesen habe.
John Topley
7

IFrames sind nicht tot, aber Frameset / Frames sterben.

In den letzten beiden Versionen von IE (IE7 / IE8) hat das Vergrößern von Frames (nicht von IFrames) katastrophale Ergebnisse erzielt.

Verwenden Sie auf jeden Fall IFrames, aber IMHO halten Sie sich von Framesets / Frames fern.

scunliffe
quelle
5

In meiner vorherigen Firma haben wir eine gehostete Anwendung bereitgestellt, die Kunden in ihre eigenen Websites integrieren würden. Manchmal verwendeten sie dazu einen IFrame und passten unsere gehostete Seite in ihre vorhandenen Designs ein. Manchmal wurde dies sogar nahtlos durchgeführt (dh der IFrame hatte keine Ränder oder Bildlaufleisten, er sah nur wie ein Teil der Seite aus). Ich hielt dies für eine gute Verwendung des Tags.

Joshua Carmody
quelle
Iframes sind ein Muss, wenn es darum geht, Dinge zu erledigen, die Sie in Kundenwebsites mit Ihrem eigenen Stil und Javascript einfügen müssen, damit der Code des Benutzers nicht beschädigt wird. CSS kann leicht überschrieben werden und JS kann manchmal (in seltenen Fällen) Konflikte verursachen, daher ist es am besten für einen "Closed System" -Ansatz.
vsync
5

Sie können unter bestimmten Umständen äußerst nützlich sein, diese sind jedoch begrenzt. Insbesondere das Einbetten gemeinsamer Funktionen über mehrere Standorte hinweg.

Zum Beispiel habe ich einen Kunden, der eine Reihe von E-Commerce-Websites für schottische Waren betreibt. Als Teil davon haben wir einige einfache Anwendungen entwickelt, um mögliche Clannamen aus Ihrem Nachnamen oder Ihrer Wahl von Tartans zu ermitteln (kichern Sie, wenn Sie möchten, aber Tartans sind für unsere Wirtschaft 700 Millionen USD pro Jahr wert). Die Datenbank dahinter ist überraschend groß (fast zehntausend Zeilen in den Kernnamen- und Tartan-Tabellen) und wird regelmäßig aktualisiert.

Daher haben wir die Anwendungen so eingerichtet, dass sie auf einer Website ausgeführt werden, und diese dann mithilfe eines Iframes in unsere anderen Websites eingebettet. Dies ermöglicht die einfache Übergabe von Javascript-Parametern, sodass wir die Auswahl eines Tartans oder Clans mit Funktionen auf der Einbettungssite integrieren können. Der Iframe ist als Noborder festgelegt, sodass er für den Endbenutzer völlig nahtlos erscheint.

Natürlich gibt es auch andere Möglichkeiten, aber die Verwendung eines Iframes ist einfach und robust. Und es ist sicherlich nicht veraltet.

Cruachan
quelle
5

Pferde für Kurse ... <iframe> s sind wie alles andere ... für den richtigen Zweck sind sie das richtige Werkzeug; für den falschen Zweck sind sie ein hässlicher Hack oder schlimmer.

In Ajax sind <div> s häufig der geeignetere Container. An einigen Stellen ist die Weitergabe externer Inhalte als Teil Ihrer eigenen Website, die von <iframe> unterstützt wird, unangemessen.

Mein Team hat neulich einen <iframe> verwendet, um Benutzern den Zugriff auf ihren HTML-E-Mail-Verlauf zu ermöglichen. Die E-Mails waren vollständige <html> -Seiten, die wir einfach in unsere Webvorlage einfügen wollten. <iframe> s waren absolut perfekt für die Präsentation dieser Daten] '.

Auf der anderen Seite sollten <iframe> s fast immer in von Benutzern eingereichten Inhalten entfernt oder deaktiviert werden, die zurück auf die Site ausgegeben werden, da sie in diesem Zusammenhang ein großes Sicherheitsproblem darstellen.

Tsuchan
quelle
4

Die Google Gadget-Spezifikation basiert derzeit auf Iframes: http://code.google.com/apis/gadgets/docs/spec.html

Derzeit sind sie die einzige einfache Möglichkeit, Javascript-Apps zu isolieren, die von mehreren Domänen / Anbietern abgerufen werden.

Auch viele der Widgets, die von Dritten auf ihren Websites eingebettet werden, verwenden Iframes.

Obwohl sie ihre Nachteile haben, bieten iframes eine pragmatische Lösung für häufig auftretende Probleme im Web. Ich muss raten, dass sie noch einige Zeit da sein werden.

Jason
quelle
2

Ich habe gerade eine Site von einem normalen Frameset in Iframes geändert, da normale Frames nicht das tun konnten, was ich brauchte. Es verursachte keine Probleme mit dem Rest der Codebasis.

Valerion
quelle
2

Compliance- und Sicherheitsprobleme können Sie auch dazu veranlassen, Iframes zu verwenden. Einkaufswagen sind beliebte IFrame-basierte Implementierungen, wenn Sie einen Einkaufswagen als Teil einiger Webseiten visuell integrieren möchten, ohne die volle Verantwortung für die Zahlungsabwicklung zu übernehmen.

Wir liefern normalerweise einen Iframe, um unsere E-Commerce-Inhalte und Kunden zu integrieren, wie schlüsselfertig es sein kann.

quolo
quelle
0

Ich arbeite für ein Unternehmen, das Frames für alles verwendet hat, von Pulldown-Menüs, Listen, Inhaltsblöcken usw., um die Feinheiten von .net-Webformularen abzudecken. Die Anwendung ist sehr langsam und läuft nur im IE. Tu das nicht.

Lovemossnot
quelle