Warum wurden Frames in HTML5 veraltet, nicht jedoch iFrames?

67

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

Roc Martí
quelle
danke für den link, aber was ist der kleine unterschied zwischen den beiden, dass iframes nicht veraltet wurden.
1
Weil Frames von Anfang an eine schreckliche Idee waren, aber iframes ein paar legitime Anwendungsfälle haben?
GordonM

Antworten:

81

Es gibt ein paar Missverständnisse in Ihrem Beitrag. Erstens sind die Elemente frameund framesetin HTML5 nicht veraltet, sondern veraltet (dh sie wurden vollständig entfernt).

Zweitens sind die Elemente frameund framesetnicht dasselbe wie das iframeElement und geben auch nicht dieselbe Ausgabe aus:

  • Das framesetElement 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 iframeElement 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 iframein 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.


Anmerkungen

Hinweis 1: Das objectElement überschneidet sich etwas mit dem iframeElement, 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 iframeElement aufweist.


quelle
8
Warum sind Frameset-Elemente für "Usability" und "Accessibility" schlecht, iframe-Elemente dagegen nicht?
Meriton - Streik
18
@meriton Das Frameset erstellt eine Seite aus mehreren Dokumenten mit derselben Priorität. Dies stellt Screenreader vor Herausforderungen , die nicht wissen, auf welches Dokument sie sich zu einem bestimmten Zeitpunkt konzentrieren sollen. IFrame-Elemente hingegen werden einfach in eine einzelne Seite eingebettet: Sie unterscheiden sich nicht von eingebetteten Bildern.
9
Herausforderungen für Screenreader: Die Blinden, mit denen ich gesprochen habe, haben alle gesagt, dass sie es vorziehen, die Navigation in einem separaten Frame (nicht in einem iFrame) zu speichern, weil sie sie ignorieren und nur dann vorlesen lassen können, wenn sie wollen. Der eigentliche Schuldige für Bildschirmleseprogramme ist Javascript und AJAX, wodurch Seiten mit aktuellen Bildschirmleseprogrammen völlig unbrauchbar werden (meine Informationen sind ungefähr 10 Monate alt). Meine persönlichen Erfahrungen mit Screenreadern unterstützen dies.
GlenPeterson
4
Ich habe mich gefragt, ob viele der oft geforderten Behauptungen zur Barrierefreiheit von 2005 für ein Update nicht überfällig waren. Vielen Dank für den Widerspruch.
Erik Reppen
1
@GlenPeterson Der gleiche Effekt ohne Frame-Element kann erzielt werden, indem das Block-Element mit CSS im Ansichtsfenster fixiert wird. So sollte es gemacht werden, wenn Sie diese Art der Navigation wollen. Es macht mehr Sinn.
Netrox
8

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.

Slawek
quelle
7

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.

JacquesB
quelle