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.
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.
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:
<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
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.
*** 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.
Wenn Sie IFrames verwenden, um Ihre eigenen Inhalte bereitzustellen, wird eine "Wand" für den Zugriff auf die Inhalte in diesem Bereich erstellt.
Dadurch ist das DOM für den IFrame für Tools wie jQuery, Prototyp usw. weniger zugänglich.
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.
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.
<objectid="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.
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.
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.
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.
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.
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.
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.
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.
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.
Antworten:
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:seamless
und das faszinierendesandbox
.quelle
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:
<iframe>
s (als Frames im Allgemeinen) sind meistens nicht benutzerfreundlich:<div>
Um es klar auszudrücken: Ich spreche von
<iframe>
einem Schnittstellenelement. Kein verstecktes Element zum Laden anderer Inhalte wie z. B. Google Mail.quelle
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:
quelle
IFrames sind nicht veraltet, aber die Gründe für ihre Verwendung sind selten.
Gründe für die Verwendung von Iframes:
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.
quelle
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:
Wurden:
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.
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.
quelle
IFrames werden häufig mit AJAX verwendet. GMail verwendet zum Beispiel neun versteckte IFrames, glaube ich.
quelle
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.
quelle
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.
quelle
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.
quelle
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.
quelle
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.
quelle
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.
quelle
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.
quelle
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.
quelle