Für mich sind Iframes rein böse (na ja, vielleicht nicht so rein). Sie scheinen viele Probleme zu machen. Ja, Ihre gesamte Site wird einmal geladen, und dann können Sie nur eine einzelne Seite laden. Aber die Leute haben AJAX zu diesem Zweck erfunden.
Eines der größten Probleme, das ich festgestellt habe, iframe
war, dass ich keinen Link zu einer der Unterseiten einfügen konnte, da sich die URL nie geändert hat (ja, ich weiß, dass es dafür eine Problemumgehung gibt). Zweitens können Websuchmaschinen Probleme haben, diese Websites korrekt zu indizieren.
Manchmal ist die Zugänglichkeit dieser Websites schlechter und einige Browser können sie sogar falsch anzeigen.
Es gibt bessere Möglichkeiten, ein Layout ohne (i) Rahmen zu entwerfen. Jeden Tag kann ich jemanden sehen, der bei SO Fragen stellt, wie "Wie greife ich mit jQuery auf iframe zu?".
Was sind die Vorteile von iframes? Welchen Grund kann es sein, sie noch zu benutzen? Ich möchte nur wissen warum :)
(Da es keine echte Frage ist, ist es ein CW)
Antworten:
Ich kann mir (im Moment) zwei Gründe vorstellen, warum Leute immer noch iframes anstelle von AJAX verwenden würden:
1) Iframes umgehen die domänenübergreifende Ursprungsrichtlinie (Bilder, Skripte und Stile nicht). Dies kann nützlich sein, um Websites / Inhalte von anderen Domainnamen relativ sicher abzurufen. Grundsätzlich bietet dies den Vorteil, dass Daten aus anderen Domänen visuell angezeigt werden können, ohne dass sie mit unbegrenztem Zugriff auf Ihrer gesamten Seite herumstampfen (wie dies bei JSONP möglich wäre).
2) Sie können mehrere Arten von Ressourcen aus einem Iframe laden, nicht nur bestimmte MIME-Typen (Sie sind relativ beschränkt auf Anwendung / Javascript, Anwendung / X-Javascript, Text / CSS, Text / XML, Bild / PNG, Bild / jpeg, image / gif mit Skripten, XHR, Bildern und Quellen). Wenn ich Ihnen beispielsweise ein PDF anzeigen möchte, kann ich einen Iframe öffnen und das Adobe Reader-Plugin diese Datei anzeigen lassen. Wenn ich in derselben Domäne ein Skript, einen Stil und ein Bild zusammen leiten möchte (Inline auf der Seite, Bild müsste Daten-URI sein), kann ich dies mit einem Iframe erreichen (und wenn es sich in derselben befindet) Domäne, Port und Protokoll Ich kann auch mit JavaScript darauf zugreifen.
Wussten Sie, dass Google Mail eine Reihe von Iframes ist? Der sichtbare Teil ist nur eine clevere Positionierung. Darüber hinaus verwenden viele OAuth-Implementierungen (Twitter, Facebook, Google, Yahoo!) normalerweise Iframes, um einen Benutzer in seiner Domain mit einer erfolgreichen Authentifizierungs-URL zu verknüpfen (nachdem sich der Benutzer angemeldet hat).
quelle
<embed src="http://www.pdf995.com/samples/pdf.pdf" type="application/pdf">
IFRAMEs werden verwendet, um Inhalte von Drittanbietern in eine Website einzubetten und zu isolieren.
Die meisten Web-Werbelösungen basieren auf Iframes, da sie Sicherheit (domänenübergreifende Richtlinien) und isolierte Rechtecke auf dem Bildschirm bieten, die vollständig durch Inhalte und Skripte von Drittanbietern verwaltet werden können (ein häufiger Anwendungsfall sind Werbung).
Eine weitere moderne Verwendung von IFRAMES ist die Verwaltung des Verlaufs (allgemeine Problemumgehung für Zurück-Schaltflächen) von AJAX-Anwendungen.
FRAMEs sind eine schlechte Version von IFRAMES. Ihre Verwendung nimmt ab.
quelle
Wenn ein Benutzer Javascript deaktiviert hat, funktionieren iframes, wenn Ajax dies nicht tut. Dies kommt nicht in Frage, wenn man bedenkt, dass Leute Dinge wie NoScript verwenden .
quelle
<form>
Posten auf Zielen).XMLHttpRequest
.Ich verwende sie auf Ajax-Websites, wenn ich Dateien hochladen muss, ohne die Seite neu zu laden.
quelle
Ich sehe immer noch, dass Iframes in großen Unternehmen verwendet werden, wo sie ein einzelnes Zeichen bereitstellen, auf dem Header-Informationen über den authentifizierten Benutzer eingefügt werden, die dann über einen Iframe an die eigentliche (n) Anwendung (en) übergeben werden. Da das den iframe umgebende "Portal" alle spezifischen Authentifizierungsdetails verarbeitet, muss für die dahinter stehenden Anwendungen nicht jeweils eine Implementierung vorhanden sein, was die Entwicklung für das Entwicklungsteam vereinfacht und einen einzigen Ort zum Überwachen und Anpassen von Authentifizierungsdetails bietet von Benutzern.
quelle
Es gibt viele technische Gründe, sie zu verwenden (insbesondere das von Dan Beam erwähnte Sicherheitsproblem).
Was Sie nicht tun sollten, ist, Iframes "wie Frames" zu verwenden und zu neuen Seiten zu navigieren, indem Sie nur den Iframe aktualisieren. Wie Sie sagen, verhindert dies, dass die Navigation mit Lesezeichen / Links versehen werden kann, auf die normalen Navigationsschaltflächen reagiert und nützliche Link-Vorteile wie das Öffnen neuer Registerkarten bietet.
Aber das ist Iframes nicht eigen. Sie können immer mehr Seiten sehen, auf denen die Navigation erfolgt, indem Sie neuen Inhalt mit abrufen
XMLHttpRequest
und in die Hauptinhaltsbereiche schreibeninnerHTML
. Oft geschieht dies mit jQueryload()
und clever-cleveren Slidey-Animationen. Dies unterbricht die Navigation genauso stark wie iframe-using-as-Frame oder Framesets der alten Schule. Es ist eine Schande, dass so viele Webautoren diese Taktik anwenden, weil sie glauben, dass es sich um eine hochmoderne Webdesign-Methode handelt, wenn es sich bei den verachteten Framesets von gestern wirklich nur um einen neuen Skin handelt.Sie können es in beiden Fällen umgehen, aber es bedeutet, dass Sie einen Ansichtsstatus im
#
Fragment- ID- Teil speichern und eine ordnungsgemäße Hash-Navigation unterstützen müssen, was nicht trivial ist. Selbst dann haben Sie immer noch Probleme mit Nicht-JS-Agenten wie Suchmaschinen. Sie müssen am Ende eine parallele?
und haben#
basierte Navigation haben, um beide zu unterstützen. Es ist ein Schmerz und die meisten stören sich nicht.quelle
Framesets sind ab HTML 5 veraltet, und manchmal benötigen Sie einen Frame mit einer anderen Site innerhalb einer Site. Auch AJAX kann nur so viel. Versuchen Sie, eine Datei über https ohne Iframe auf eine Site in einer anderen Domain hochzuladen. AJAX wird Ihnen dort nicht helfen.
quelle
Neben anderen Gründen habe ich eine bestimmte Verwendung
iframe
in meiner Anwendung. Leider ist der Zielbrowser in meinem FallInternet Explorer 6
. Ich brauche eine Fußzeile und eine Kopfzeile, die auf meinen Webseiten festgelegt sind. Der Hauptteil dieser Seite ist scrollbar.Es gibt jedoch einen Fehler in IE6, bei dem ich mit der CSS-Eigenschaft kein
div
Element überselect
Elementen anzeigen kannz-index
. Daher muss ich eine erstelleniframe
, der als Hack verwendet wird, um dieses Problem zu vermeiden.Natürlich ist dies eine wirklich spezifische Verwendung
iframe
und betrifft nurIE6
...quelle
Javascript WYSIWYG-Editoren verwenden Iframes, da dies der einfachste und beste Weg ist, dies zu tun. Zum Beispiel verwendet TinyMCE es:
http://tinymce.moxiecode.com/
quelle
Ich habe ein soziales Netzwerk aufgebaut und sehe, dass Iframes für Widgets nützlich sind, um sie auf der Website anderer Leute zu platzieren, um sie wie ein Mini-Profil anzuzeigen oder in den Inhalt eines Remote-Servers zu integrieren. Scheint der einfachste Weg zu sein, dies zu bauen. Ich weiß, dass einige Widgets JavaScript verwenden. Auch mit der iframe-Methode entspricht die Sitzung dem normalen Besuch der Site, daher ideal für ähnliche Schaltflächen.
quelle
Viele formatierte Texteditoren (z. B. TinyMCE, HTMLArea) sind als Iframe implementiert.
quelle
iFrames sind in einigen Fällen in Ordnung, beispielsweise als X-Domain-Anforderungen oder zum Posten von Daten an eine Quelle über Parameter. Wenn ich jedoch domänenübergreifend auf Daten zugreifen möchte, bevorzuge ich die Verwendung von CSS-Dateien - sie können Parameter akzeptieren, Cookies setzen, Inhalte zur Seite hinzufügen (: vorher &: nachher) und ein visuelles Feedback geben.
quelle