it-swarm.com.de

Ist ein leerer iFrame-Quellcode gültig?

Ich möchte, dass in einem iframe zunächst src leer ist und dann, sobald die Seite geladen ist. Rufen Sie eine JS-Funktion auf und setzen Sie den src -Wert auf einen tatsächlichen Wert.

So ist <iframe src="#" /> valid OR muss ich etwas anderes verwenden wie javascript:;, etc

66
testndtv

gerade <iframe src='about:blank'></iframe>

91
ariel

Der HTML 5-Arbeitsentwurf Abschnitt 4.8.2 lautet (Hervorhebung von mir):

Das Attribut src gibt die Adresse einer Seite an, die der verschachtelte Browserkontext enthalten soll. Das Attribut muss, falls vorhanden, eine gültige, nicht leere URL sein , die möglicherweise von Leerzeichen umgeben ist.

Gemäß RFC 3986 müssen gültige URLs mit Schemaname beginnen, und relative Verweise können nicht nur aus Fragment bestehen.

Deshalb, # ist keine gültige URL und sollte nicht als Wert des Attributs src verwendet werden.

Verwenden Sie stattdessen about: blank .

47

Nein, es ist nicht gültig, einen leeren iFrame-Quelltext anzugeben.

Du solltest benutzen <iframe src="about:blank" />.

# soll ein Verweis auf einen Anker in der aktuellen Seite sein (oder wird häufig als Routing-Schema verwendet, wenn mit AJAX Anforderungen). Es wäre sinnlos, es als Quelle eines Iframes zu verwenden, da ein Iframe nicht auf den Inhalt der aktuellen Seite verweist und nicht mit AJAX Anforderungen) verwendet wird.

about:blank ist ein browserübergreifender Standard zum Anzeigen eines leeren Dokuments.

Update 8. Juni 2012:

Es scheint, dass die 'lebende' Spezifikation einen iframe nicht länger ungültig macht, wenn das src -Attribut fehlt:

Wenn beim Erstellen des Elements das Attribut "srcdoc" nicht festgelegt wurde und das Attribut "src" entweder nicht festgelegt oder festgelegt wurde, sein Wert jedoch nicht aufgelöst werden kann, bleibt der Browserkontext auf der ersten Seite "about: blank page".

Wenn diese beiden Attribute jedoch nicht festgelegt sind, lautet der Browserkontext standardmäßig about:blank. Um eine ordnungsgemäße Abwärtskompatibilität zu gewährleisten, ist es empfehlenswert, ausführlich zu sein und vorerst das about:blank url.

23
Aron Rotteveel

Es sieht so aus, als ob Sie den src auch komplett weglassen können:

http://dev.w3.org/html5/spec/Overview.html#the-iframe-element

Wenn beim Erstellen des Elements das Attribut srcdoc nicht festgelegt ist und das Attribut src entweder oder nicht set oder set, aber sein Wert kann nicht aufgelöst werden, der Browserkontext bleibt bei der ersten about: -Leerseite.

10
rjmunro

Als Teil des URI-Schemastandards ist about: blank wahrscheinlich die beste Option, da es eine sehr gute Browserunterstützung bietet.

about: blank Gibt ein leeres HTML-Dokument mit dem Medientyp text/html und der Zeichencodierung UTF-8 zurück. Dies wird häufig verwendet, um leere Seiten in Browserkontexte zu laden, z. B. iFrames in HTML, die dann durch Skripts geändert werden können. Sie können hier weiter sehen

1
Selay

Sie können about:blank im src -Attribut (wie zuvor von ariel erwähnt), sonst würde es einen Fehler auslösen, wenn von einer sicheren Seite aus bedient wird.

Eine sichere Seite https würde einen Fehler von möglicherweise unsicheren Daten auf der sicheren Website auslösen.

1
Naveed Butt

Sie könnten versuchen, den iframe über Javascript hinzuzufügen, sodass Sie im HTML-Code keinen leeren Code benötigen:

(jQuery-Beispiel)

<script type="text/javascript">
$().ready(function() {
    $("<iframe />").attr("src", "http://www.bbc.co.uk/").appendTo("body");
});
</script>

Das Hinzufügen des Iframes mit Javascript ermöglicht eine angemessene Verschlechterung - Benutzer ohne Javascript sehen keinen leeren Iframe.

1
whostolemyhat

Wenn Sie about:blank Nicht verwenden möchten, können Sie Javascript als src für Ihre iframe verwenden, wie im folgenden Beispiel dargestellt:

<iframe name="TV" id="tv" style="width:100%; background: #800000" src="javascript:document.write('<h3>Results Window</h3>')"></iframe>

Im obigen Beispiel wird ein iframe mit einem braunen Hintergrund mit einer einfachen Meldung <h3>Results Window</h3> Initialisiert. Die Ziele Ihrer Links sollten jedoch gleich dem Attribut iframename sein, in diesem Beispiel also TV.

1
SaidbakR

Für die Aufzeichnung

Nehmen wir das nächste Beispiel an (Firefox 58 ist möglicherweise in allen Browsern vorhanden).

<link href="css.css" rel="stylesheet" type="text/css"/>
<iframe src='about:blank'></iframe>

IFrame wird VOR dem CSS geladen, sodass das Rendering der Seite sichtbar ist, bevor das CSS geladen wird. Das heißt für den Bruchteil einer Sekunde sieht die Seite ohne CSS aus.

Stattdessen:

<link href="css.css" rel="stylesheet" type="text/css"/>
<iframe src='blank.html'></iframe>

Es funktioniert gut, das CSS wird geladen und der Iframe wird schließlich geladen.

0
magallanes