Warum wurden Frames in HTML5 veraltet, nicht jedoch iFrames? Immerhin gibt es fast keinen Unterschied zwischen den beiden. In vielen Fällen würde die Verwendung einer der beiden die gleiche Ausgabe ergeben (entschuldigen Sie, wenn ich falsch liege)?
Warum wurden Frames in HTML5 veraltet, nicht jedoch iFrames? Immerhin gibt es fast keinen Unterschied zwischen den beiden. In vielen Fällen würde die Verwendung einer der beiden die gleiche Ausgabe ergeben (entschuldigen Sie, wenn ich falsch liege)?
Antworten:
Es gibt ein paar Missverständnisse in Ihrem Beitrag. Erstens sind die Elemente frame
und frameset
in HTML5 nicht veraltet, sondern veraltet (dh sie wurden vollständig entfernt).
Zweitens sind die Elemente frame
und frameset
nicht dasselbe wie das iframe
Element und geben auch nicht dieselbe Ausgabe aus:
Das frameset
Element ersetzt das body-Element in Seiten, um ein anderes Dokumentmodell für Webseiten einzuschließen: Sie sind schlecht für die Benutzerfreundlichkeit und Barrierefreiheit, und was sie erreichen sollen, wurde vollständig durch CSS und die allgegenwärtige serverseitige Entwicklung ersetzt.
Das iframe
Element ersetzt jedoch nicht den Hauptteil einer Seite. Es dient als Mittel zum Einschließen eines neuen Browserkontexts, der in einen Inhaltsblock eingebettet ist. Es leidet nicht unter den gleichen Usability- oder Accessibility-Problemen wie das Frameset-Modell und wird fast überall dort eingesetzt, wo ein eingebetteter Browserkontext benötigt wird (Widgets sind das produktivste Beispiel). 1
Das iframe
in HTML5 bietet auch zusätzliche Funktionen, da es in einer Sandbox gespeichert werden kann , sodass das übergeordnete Dokument entscheiden kann, was darin ausgeführt wird. Dies ermöglicht eine gewisse Sicherheit für das übergeordnete Dokument (und die Besucher des übergeordneten Dokuments) beim Einbetten von nicht vertrauenswürdigem Inhalt.
Hinweis 1: Das object
Element überschneidet sich etwas mit dem iframe
Element, hat jedoch ein anderes Inhaltsmodell (das hauptsächlich für Plugins gedacht ist), einen eigenen Satz von Einschränkungen und weist nicht die Sandbox-Attribute auf, die das iframe
Element aufweist.
Frames (Frameset) fungieren als Dokument. Es wurde entfernt, weil es die Struktur und Navigation von HTML-Dokumenten zerstört. Z.B. Sie haben Links in einem Frame, Inhalt im anderen, Sie können den Link von der Seite in einem neuen Fenster nicht öffnen, Sie können keinen Link zu einer bestimmten Unterseite erstellen usw.
Auf der anderen Seite werden iframes nichts kaputt machen, wenn sie richtig verwendet werden, weil sie dazu gedacht sind, Inhalte (z. B. Anzeigen) zu sandboxen.
Framesets werden häufig so verwendet, dass sie das Grundprinzip des Webs verletzen: Jedes Dokument hat eine einzelne URL. Dies führt zu Problemen mit Verknüpfungen, Lesezeichen, Suchmaschinen usw.
Die typische Verwendung eines Framesets wäre ein Frame oben mit einem Logo oder einer Kopfzeile, ein Frame an der Seite mit einem Menü und ein Inhaltsframe. Suchmaschinen indizieren jedoch einzelne Seiten. Wenn Sie also eine Seite in Google finden, wird direkt auf die Inhaltsseite ohne das Frameset verwiesen, sodass Sie die Navigation verlieren. Das Problem mit Links und Lesezeichen ist, dass Sie normalerweise eine bestimmte Inhaltsseite innerhalb des Framesets verlinken oder mit einem Lesezeichen versehen möchten, ohne das Frameset selbst zu verlieren. Das ist nicht einfach.
Der Grund, warum Framesets in erster Linie populär wurden, war, dass sie eine statisch positionierte Kopfzeile und ein Menü mit einem scrollenden Inhaltsbereich zuließen. Mit CSS ist das heute viel einfacher. Darüber hinaus ermöglichten Frames die Verwendung allgemeiner Elemente wie Logos und Menüs auf mehreren Seiten, ohne dass eine serverseitige Codierung erforderlich war. Dies war ein Vorteil in einer Zeit, in der die serverseitige Codierung mühsam und fehleranfällig war (z. B. CGI-Skripte) und viele Hosts die serverseitige Skripterstellung überhaupt nicht zuließen. Heutzutage wird dies mit Content Management Systemen (CMS) und besseren serverseitigen Plattformen auf der Serverseite viel besser gehandhabt.
Grundsätzlich hat die Verwendung eines Framesets keine Vorteile, nur viele Probleme.
IFrames können genauso verwendet werden wie Framesets, und in diesem Fall führen sie auch zu denselben Problemen. Es gibt aber auch viele legitime Verwendungen von iframes, die nicht zu den gleichen Problemen führen.