Der Code

Für dieses Tutorial benötigen wir zwei HTML-Dateien: eine übergeordnete Datei, in die wir den iframe einfügen, und eine untergeordnete Datei, die den Inhalt des iframe enthält.

child.html

Unsere untergeordnete Datei wird einen einfachen Dummy-Textgenerator enthalten, bei dem die Besucher auf eine Schaltfläche klicken können, um einen weiteren Absatz mit lorem ipsum Text hinzuzufügen.

Da es in diesem Tutorial um den iframe geht, und nicht um die Funktionalität dessen, was darin enthalten ist, können Sie den folgenden Code kopieren und in child.html einfügen:

Sie können den obigen Code in diesem CodePen ausprobieren:

parent.html

Wir können nun unseren iframe in parent.html einfügen.

Fügen Sie den üblichen HTML5-Boilerplate-Code ein und fügen Sie dann das Folgende zwischen die Body-Tags ein:

<iframe src="child.html" style="width:100%;border:none;"></iframe>

Aber hier stoßen wir auf unser Problem. Da wir overflow: hidden gesetzt haben, verschwinden die Schaltflächen und die Hälfte des ersten Absatzes.

Und wenn wir overflow: hidden nicht gesetzt hätten, würden wir zwei Bildlaufleisten sehen, wie in der Abbildung oben. Um dies zu beheben, müssen wir Post-Nachrichten von child.html an das übergeordnete Fenster senden!

child.html

Zurück in child.html müssen wir also neue Ereignis-Listener zum Skriptabschnitt hinzufügen.

Wir müssen dem übergeordneten Element die Höhe des iframe mitteilen:

  • jedes Mal, wenn es geladen wird,
  • wenn die Größe des Fensters geändert wird, und
  • wenn eine Schaltfläche gedrückt wird.

Wenn jedes dieser Ereignisse eintritt, werden wir eine Funktion namens sendPostMessage auslösen.

Fügen Sie den folgenden Code direkt vor dem schließenden <script>-Tag ein:

Jetzt erstellen wir unsere sendPostMessage()-Funktion.

Wir wollen die Höhe des Elements mit der ID container messen. Wenn (und nur wenn) sich die Höhe ändert, wollen wir eine Nachricht namens frameHeight an das übergeordnete Fenster senden, um es über die Aktualisierung zu informieren.

Der folgende Code sollte über dem stehen, was wir gerade geschrieben haben:

Das zweite Argument der postMessage-Methode stellt den Zielursprung dar: den Hostnamen des übergeordneten Fensters.

Dies ist nützlich für die Sicherheit, um sicherzustellen, dass die Nachricht nur an bestimmte Domains gesendet wird, aber für Entwicklungszwecke können wir den Zielursprung auf '*' setzen. Das bedeutet, dass jedes übergeordnete Fenster die Nachricht erhält.

Insgesamt sollte der Code von child.html wie folgt aussehen:

parent.html

Laden wir parent.html in den Browser und öffnen die Konsole (drücken Sie CTRL+Shift+ J in Google Chrome).

Wenn wir die Größe des Fensters ändern, sollten wir nun Werte in der Konsole sehen. Der letzte Schritt besteht darin, diese Werte zu verwenden, um die Höhe des iframe festzulegen, wenn einer dieser Werte gesendet wird.

Wir müssen auf Nachrichtenereignisse warten und jedes Mal, wenn wir eines erhalten, sollten wir es verwenden, um die Höheneigenschaft des iframe einzustellen (plus ein wenig Polsterung):

Insgesamt sollte Ihre parent.html-Datei so aussehen:

Wenn Sie die Schritte richtig befolgt haben, wird Ihr iframe jetzt automatisch die Größe ändern, als ob sein Inhalt Teil des übergeordneten Fensters wäre!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.