Antworten:
Wie bei allen Technologien hat es seine Höhen und Tiefen. Wenn Sie einen Iframe verwenden, um eine ordnungsgemäß entwickelte Site zu umgehen, ist dies natürlich eine schlechte Praxis. Manchmal ist jedoch ein Iframe akzeptabel.
Eines der Hauptprobleme bei einem Iframe hat mit Lesezeichen und Navigation zu tun. Wenn Sie damit einfach eine Seite in Ihren Inhalt einbetten, ist das meiner Meinung nach in Ordnung. Dafür ist ein Iframe da.
Allerdings habe ich auch Iframes missbraucht gesehen. Es sollte niemals als integraler Bestandteil Ihrer Website verwendet werden, sondern als Inhalt einer Website.
Wenn Sie dies ohne Iframe tun können, ist dies normalerweise die bessere Option. Ich bin sicher, dass andere hier möglicherweise mehr Informationen oder spezifischere Beispiele haben. Alles hängt von dem Problem ab, das Sie lösen möchten.
Wenn Sie jedoch auf HTML beschränkt sind und keinen Zugriff auf ein Backend wie PHP oder ASP.NET usw. haben, ist manchmal ein Iframe Ihre einzige Option.
window.postMessage()
beispielsweise die kollaborative automatische Größenänderung von Iframes implementieren.
Sie sind keine schlechte Praxis, sie sind nur ein weiteres Werkzeug und sie erhöhen die Flexibilität.
Zur Verwendung als Standardseitenelement ... sind sie gut, da sie eine einfache und zuverlässige Möglichkeit sind, Inhalte auf mehrere Seiten aufzuteilen. Insbesondere für benutzergenerierte Inhalte kann es nützlich sein, interne Seiten in einem iframe
so schlechten Markup zu "sandboxen", dass die Hauptseite nicht beeinträchtigt wird. Der Nachteil ist, dass iframe
Ihre Benutzer frustriert sind, wenn Sie mehrere Bildlaufebenen einführen (eine für den Browser, eine für den ). Wie adzm sagte, möchten Sie keine iframe
für die primäre Navigation verwenden, sondern sie als Text / Markup betrachten, der der Art und Weise entspricht, wie ein Video oder eine andere Mediendatei eingebettet wird.
Bei der Skripterstellung von Hintergrundereignissen können Sie im Allgemeinen zwischen ausgeblendeten iframe
und XmlHttpRequest
geladenen Inhalten für die aktuelle Seite wählen. Der Unterschied besteht darin, dass a iframe
eine Seitenladung generiert, sodass Sie mit den meisten Browsern im Browser-Cache vor- und zurückgehen können. Beachten Sie, dass Google, das XmlHttpRequest
überall verwendet, iframe
in bestimmten Fällen auch s verwendet , damit sich ein Nutzer im Browserverlauf vor- und zurückbewegen kann.
Es ist eine „schlechte Praxis“, sie zu verwenden, ohne ihre Nachteile zu verstehen. Adzms Post fasst sie sehr gut zusammen.
Auf der anderen Seite nutzt Google Mail iFrames im Hintergrund stark für einige seiner cooleren Funktionen (wie das automatische Hochladen von Dateien). Wenn Sie sich der Einschränkungen von iFrames bewusst sind, sollten Sie meiner Meinung nach keine Schwierigkeiten haben, diese zu verwenden.
Nachdem ich unter vielen Umständen mit ihnen gearbeitet habe, bin ich wirklich zu dem Schluss gekommen, dass Iframes das Webprogrammierungsäquivalent der goto-Anweisung sind. Das heißt, etwas, das allgemein vermieden werden sollte. Innerhalb einer Site können sie etwas nützlich sein. Cross-Site sind sie jedoch fast immer eine schlechte Idee für alles andere als den einfachsten Inhalt.
Berücksichtigen Sie die Möglichkeiten ... Wenn sie für parametrisierte Inhalte verwendet werden, haben sie eine Schnittstelle erstellt. Und auf einer professionellen Website erfordert diese Schnittstelle eine SLA- und Versionsverwaltung - die fast immer in Eile ignoriert werden, um online zu gehen.
Bei Verwendung für aktiven Inhalt - Frames, die das Skript hosten - gelten die (unterschiedlichen) domänenübergreifenden Skriptbeschränkungen. Einige können gehackt werden, aber selten konsequent. Und wenn Ihr gerahmter Inhalt interaktiv sein muss, wird es schwierig sein, dies über den Rahmen hinaus zu tun.
Bei Verwendung mit lizenzierten Inhalten werden die teilnehmenden Websites durch die Notwendigkeit belastet, Berechtigungsinformationen zwischen den Hosts aus dem Band zu verschieben.
Obwohl sie gelegentlich innerhalb einer Site nützlich sind, sind sie für Mashups eher ungeeignet. Sie sehen echte Portale und Portlets viel besser. Schlimmer noch, sie sind ein Liebling jedes Webamateurs - viele Tech-Manager haben sie als Lösung für viele Probleme belagert. In der Tat schaffen sie mehr.
Nach meiner Erfahrung ist eine positive Seite für iframe das Aufrufen von Codes von Drittanbietern, bei denen möglicherweise ein Javascript aufgerufen wird, das einen Document.write();
Befehl aufruft . Wie Sie vielleicht wissen, können diese Befehle aufgrund der Analyse (DOM-Parser usw.) nicht asynchron aufgerufen werden. Ein Beispiel hierfür ist http://sourceforge.net/projects/phpadsnew/. Ich habe iframes verwendet, um unsere Website zu beschleunigen, da mehrere Aufrufe von phpadsnews aufgetreten sind und die Website auf die Antwort gewartet hat, bevor sie mit dem Rendern fortfuhr Teile der Seite. Mit einem Iframe konnte ich der Site erlauben, andere Teile der Seite zu rendern und trotzdem den Document.write()
Befehl von phpads asynchron aufzurufen. Verhindern und Sperren.
Es gibt definitiv Verwendungszwecke für Iframes. Wie würden Sie sonst das Wetternetzwerk-Widget auf Ihre Seite setzen? Die einzige andere Möglichkeit besteht darin, das XML abzurufen und zu analysieren, aber dann benötigen Sie natürlich Bedingungen, um die permanenten Wettergrafiken anzuzeigen ... das ist es nicht wirklich wert, aber viel sauberer, wenn Sie Zeit haben.
Das ursprüngliche Frameset-Modell (Frameset und Frame-Elemente) war vom Standpunkt der Benutzerfreundlichkeit aus sehr schlecht. IFrame war eine spätere Erfindung, die nicht so viele Probleme hatte wie das ursprüngliche Frameset-Modell, aber ihren Nachteil hat.
Wenn Sie dem Benutzer erlauben, innerhalb des IFrames zu navigieren, funktionieren Links und Lesezeichen nicht wie erwartet (da Sie die URL der äußeren Seite, aber nicht die URL des Iframes mit einem Lesezeichen versehen).
Wenn Ihre Hauptseite im HTTP-Protokoll geladen wird und Teile Ihrer Seite im HTTPS-Protokoll arbeiten müssen, kann iFrame jsonp zweifellos schlagen.
Insbesondere, wenn Ihr Datentyp nicht nativ json ist und auf dem Server in json übersetzt und auf dem Client zurück in z. B. komplexes HTML übersetzt werden muss.
Also nein - iFrame ist nicht böse.
Sie sind nicht schlecht, aber tatsächlich hilfreich. Ich hatte vor einiger Zeit ein großes Problem, bei dem ich meinen Twitter-Feed einbetten musste, und es ließ md es einfach nicht auf derselben Seite tun, also stellte ich es auf eine andere Seite und fügte es als Iframe ein.
Sie sind auch gut, weil alle Browser (und Telefonbrowser) sie unterstützen. Sie können nicht als schlechte Praxis angesehen werden, solange Sie sie richtig verwenden.
Es ist erwähnenswert, dass Iframes unabhängig von der Geschwindigkeit der Internetverbindung Ihrer Benutzer oder dem Inhalt des Iframes eine kleine (etwa 0,3 Sekunden), aber spürbare Verlangsamung der Geschwindigkeit verursachen, mit der Ihre Seite heruntergeladen wird. Dies wird beim lokalen Testen nicht angezeigt. Eigentlich gilt dies für jedes Element, das einer Seite hinzugefügt wird, aber iframes scheinen schlechter zu sein.
Ich habe gesehen, dass IFRAMEs sehr erfolgreich angewendet wurden, um auf einfache Weise dynamische Kontextmenüs zu erstellen, aber die Zielgruppe dieser Web-App waren nur Internet Explorer-Benutzer.
Ich würde sagen, dass alles von Ihren Anforderungen abhängt. Wenn Sie sicherstellen möchten, dass Ihre Seite in jedem Browser gleich gut funktioniert, vermeiden Sie IFRAMEs. Wenn Sie eine enge und bekannte Zielgruppe ansprechen (z. B. im lokalen Intranet) und einen Vorteil bei der Verwendung von IFRAMEs sehen, würde ich sagen, dass dies in Ordnung ist.