Karl Heinz: Sind iFrames in der heutigen Zeit noch sinnig?

Hallo,

meine Erfahrung bezogen auf HTML hält sich in Grenzen.

Bezogen auf nachfolgende Webseite hätte ich deshalb eine Frage:

https://www.caesar-data.com/cgi-bin/booking.cgi?&request=&hotel_id=bierhaeuslefreiburg&spr=d&where=D9O56OB9O3A

Schaut man in den Quellcode der Webseite so sieht man, dass ein iFrame vorhanden ist:

<iframe src="buchen.cgi?request&display=new&ip=217.86.185.58&target=frame&&request=&
hotel_id=bierhaeuslefreiburg&spr=d&where=D9O56OB9O3A&come_from=booking.cgi" width="100%" height="600" frameborder="0" marginwidth="10" marginheight="10"></iframe>

Über das iFrame scheint wohl die eigentliche Buchungsmaske (die Hotelunspezifisch ist) in das Layout des jeweiligen Hotels (welches Hotelspezifisch ist) integriert zu werden. Liege ich da richtig?

Nun frage ich mich ob der Anbieter „Caeser-Data“ diese Lösung nicht auch ohne iFrame hätte realisieren können?

iFrames sind doch veraltet und sollten nichtmehr verwendet werden oder liege ich da falsch?

  1. Moin,

    https://www.caesar-data.com/cgi-bin/booking.cgi?&request=&hotel_id=bierhaeuslefreiburg&spr=d&where=D9O56OB9O3A

    Schaut man in den Quellcode der Webseite so sieht man, dass ein iFrame vorhanden ist:

    <iframe src="buchen.cgi?request&display=new&ip=217.86.185.58&target=frame&&request=&hotel_id=bierhaeuslefreiburg&spr=d&where=D9O56OB9O3A&come_from=booking.cgi" width="100%" height="600" frameborder="0" marginwidth="10" marginheight="10"></iframe>
    

    Über das iFrame scheint wohl die eigentliche Buchungsmaske (die Hotelunspezifisch ist) in das Layout des jeweiligen Hotels (welches Hotelspezifisch ist) integriert zu werden. Liege ich da richtig?

    vermutlich ja, sieht so aus. Und wie man an den URL-Parametern schon ahnen kann, findet da wohl ein wüster Hin- und Rück- und Weiterleitungsmechanismus statt.

    Nun frage ich mich ob der Anbieter „Caeser-Data“ diese Lösung nicht auch ohne iFrame hätte realisieren können?

    Hätte mit Sicherheit. Offensichtlich rufen sie im iframe ja nicht direkt Fremdinhalte auf, sondern eigene cgi-Programme - eigene im Sinne von: vom eigenen Server. Das unterliegt also alles deren eigener Kontrolle, man hätte diese Anwendungen folglich auch direkt in die Hauptseite integrieren können.

    Aber vielleicht hat irgendein Rotstiftquäler beschlossen, dass das zu viel Aufwand wäre, und "das muss auch einfacher gehen". Vielleicht sind die CGIs auch universelle Bausteine aus einen zugekauften Buchungssystem.

    iFrames sind doch veraltet und sollten nichtmehr verwendet werden oder liege ich da falsch?

    Kommt drauf an. Wenn ich Dinge in meine Webseite einbinden möchte, die eine fremde Quelle als fertiges, komplettes HTML-Dokument liefert, ist ein iframe vielleicht die einzige Möglichkeit. Das sind gerade solche Dinge wie ein Online-Gästebuch oder ein Kontaktformular, die man irgendwo als fertiges Modul bekommt. Oder denk an Wetterdaten zum Anzeigen auf der eigenen Webseite, die von den Wetterdiensten manchmal auch als komplettes HTML-Dokument geliefert werden.

    Wenn man allerdings selbst die Hoheit über die Inhalte und deren Form hat, würde ich von der Verwendung von iframes abraten.

    So long,
     Martin

    --
    Nothing travels faster than the speed of light with the possible exception of bad news, which obeys its own special laws.
    - Douglas Adams, The Hitchhiker's Guide To The Galaxy
    1. @@Der Martin

      Kommt drauf an. Wenn ich Dinge in meine Webseite einbinden möchte, die eine fremde Quelle als fertiges, komplettes HTML-Dokument liefert, ist ein iframe vielleicht die einzige Möglichkeit. Das sind gerade solche Dinge wie ein Online-Gästebuch oder ein Kontaktformular, die man irgendwo als fertiges Modul bekommt.

      Oder das Einbetten von Videos von Vimeo oder YouTube, was auch per Iframe realisiert wird, worin dann z.B. auch die Erkennung läuft, ob der Client mit HTML5-video was anfangen kann oder noch Flash zur Anzeige benötigt.

      Frage: Kann man YouTube-Videos auch anders einbinden, sodass die Seitenbesucher nicht von Google ausgeschnüffelt werden?

      LLAP 🖖

      --
      “The best way to help people learn: answer their coding question an hour later, they’ll have likely figured it out by then.” —Todd Motto
      Selfcode: sh:) fo:} ch:? rl:) br:> n4:& va:| de:> zu:} fl:{ ss:| ls:# js:|
      1. Hallo Gunnar,

        Frage: Kann man YouTube-Videos auch anders einbinden, sodass die Seitenbesucher nicht von Google ausgeschnüffelt werden?

        spontane Idee: Link setzen, evtl. mit Target auf Platzhalter-Iframe, evtl. mit Autoplay on.

        Gruß
        Jürgen

      2. Hallo

        Frage: Kann man YouTube-Videos auch anders einbinden, sodass die Seitenbesucher nicht von Google ausgeschnüffelt werden?

        Da Google auf der Youtube-Site die URL der Mediadateien nicht herausrückt, geht das wohl nur, indem man die Datei z.B. mit einem Browserplugin herunterlädt, an geeigneter Stelle wieder hochlädt und dort in (ein) Dokument(e) einbindet, also selbst anbietet. Ob das lizenzrechtlich i.O. ist, steht auf einem anderen Blatt. Diese Frage muss man wohl von Fall zu Fall entscheiden. Ein Youtube-Video ist das dann strenggenommen auch nicht mehr.

        Tschö, Auge

        --
        Wo wir Mängel selbst aufdecken, kann sich kein Gegner einnisten.
        Wolfgang Schneidewind *prust*
      3. Hallo,

        @@Der Martin Frage: Kann man YouTube-Videos auch anders einbinden, sodass die Seitenbesucher nicht von Google ausgeschnüffelt werden?

        theoretisch ja. Ich schau mir youtube-Videos beispielsweise nie direkt online bei youtube an, sondern nutze einen Online-Dienst, der nach Eingabe des youtube-Links erst nachschaut, in welchen Auflösungen und Formaten das Video verfügbar ist, mich eine davon auswählen lässt und mir das Video dann zum Download anbietet. Mit Google oder youtube komme ich dabei nicht direkt in Berührung.

        Vermutlich läuft dort im Hintergrund genau das, was Auge auch schon beschreibt, nur dass das Video nicht irgendwo permanent gespeichert, sondern direkt an den Client durchgereicht wird.

        Ich habe aber selbst keine Ahnung, wie das im Detail abläuft.

        So long,
         Martin

        --
        Nothing travels faster than the speed of light with the possible exception of bad news, which obeys its own special laws.
        - Douglas Adams, The Hitchhiker's Guide To The Galaxy
      4. Oder das Einbetten von Videos von Vimeo oder YouTube, was auch per Iframe realisiert wird, worin dann z.B. auch die Erkennung läuft, ob der Client mit HTML5-video was anfangen kann oder noch Flash zur Anzeige benötigt.

        Frage: Kann man YouTube-Videos auch anders einbinden, sodass die Seitenbesucher nicht von Google ausgeschnüffelt werden?

        Glaub nicht das das möglich ist. Bindet man einen iframe von Youtube ein kann Youtube auch den User tracken. Es gibt zwar sandbox, referrerpolicy usw. Aber damit zerstört man wahrsch. die genannte Erkennung auf der eingebetteten Youtubeseite.

        Bindet man einen iframe von einem Proxy Dienst ein, der das Video irgendwie von Youtube holt, kann zwar nicht Google aber dieser Dienst den User tracken...

    2. Über das iFrame scheint wohl die eigentliche Buchungsmaske (die Hotelunspezifisch ist) in das Layout des jeweiligen Hotels (welches Hotelspezifisch ist) integriert zu werden. Liege ich da richtig?

      vermutlich ja, sieht so aus. Und wie man an den URL-Parametern schon ahnen kann, findet da wohl ein wüster Hin- und Rück- und Weiterleitungsmechanismus statt.

      Ich will mal mein Problem etwas deaillierter erläutern:

      • potentieller Hotelgast sucht in google.de nach "Bierhäusle Freibug"
      • potentieller Hotelgast klickt auf ersten organischen Link und kommt somit auf die Webseite von www.bierhäusle.de. Weil der Kunde über den organischen Link gekommen ist wird als Quelle/Medium Kombination in Google Analytics google/organic angezeigt
      • potentieller Hotelgast klickt auf der eigentlichen Hotelseite (www.bierhäusle.de) auf den Button "Buchung" oben rechts und wird auf https://www.caesar-data.com/cgi-bin/booking.cgi?&request=&hotel_id=bierhaeuslefreiburg&spr=d&where=D9O56OB9O3A weitergeleitet. Da ich bezogen auf Google Analytics mit Cross-Domain-Tracking (https://support.google.com/analytics/answer/1034342?hl=de) arbeite geht die Quelle/Medium Kombination beim Wechsel von www.bierhäusle.de auf https://www.caesar-data.com/cgi-bin/booking.cgi?&request=&hotel_id=bierhaeuslefreiburg&spr=d&where=D9O56OB9O3A nicht verloren
      • Dummerweise wird die eigentliche hotelunspefifische Buchungsmaske allerdings in einem iFrame geladen. Dieses iFrame enthält auch den Google Analytics-Code. Weil das Cross-Domain-Tracking nicht funktioniert wenn iFrames verwendet werden geht die Quelle/Medium Kombination google/organic beim Laden des iFrames (welches den Google Analytics-Code enthält) verloren. Aus diesem Grund wird die Quelle/Medium Kombination durch den Standardwert google/direct überschrieben, sprich alle Buchungen werden google/direct zugeordnet auch dann wenn diese über einen anderen Kanal generiert wurden.

      Ich frage mich wie ich diese Problematik lösen kann, sprich habt Ihr eine Idee was ich tun könnte damit die Buchungen der richtigen Quelle/Medium Kombination zugeordnet werden?

    3. Wenn man allerdings selbst die Hoheit über die Inhalte und deren Form hat, würde ich von der Verwendung von iframes abraten.

      Okay, wie würdest du diesen Fall lösen:

      Ich habe einen Veranstaltungskalender auf Domain A, der per iframe in andere Seiten einzubetten ist. Natürlich mit Parametern, die die Termine aus der Datenbank bestimmen.

      Ich habe einen Dachverband auf Domain B, der die Veranstaltungen "seiner" Mitglieder auf seiner Seite zeigen möchte. Doch die Datenbank dazu ist auf Domain A.

      Klar kann ich die Datenbank A von B aus erreichen. Aber soll ich bei B nochmals die notwendigen Programme installieren? Und bei deren Weiterentwicklung nicht vergessen, wo ich sie überall hinkopieren muss? Ich plädiere für den iframe.

      Ein weiterer Fall: Ich habe eine spezielle Fan-Seite auf Domain C. Da kann man seinen nächsten Verein auf Basis der Postleitzahl suchen. Ein Programm, das nur auf C liegt. In diesem Fall ist der Zugriff auf Datenbank bei A sinnvoll, nutzt die gespeicherten Vereine und die Geo-Koordinaten zu deren Heimatort. Also ohne iframe.

      Linuchs

      1. Klar kann ich die Datenbank A von B aus erreichen. Aber soll ich bei B nochmals die notwendigen Programme installieren? Und bei deren Weiterentwicklung nicht vergessen, wo ich sie überall hinkopieren muss? Ich plädiere für den iframe.

        Das hat zunächst nichts mit der Frage "iFrame oder nicht iFrame" zu tun. Dein Script "example.org/events.js" könnte ja auch direkt ins "fremde DOM" schreiben, bzw. einen definierten Container füllen. Was neben Vorteilen wiederum auch seine Nachteile hat.

      2. Hallo

        Wenn man allerdings selbst die Hoheit über die Inhalte und deren Form hat, würde ich von der Verwendung von iframes abraten.

        Okay, wie würdest du diesen Fall lösen:

        Ich habe einen Veranstaltungskalender auf Domain A, der per iframe in andere Seiten einzubetten ist. Natürlich mit Parametern, die die Termine aus der Datenbank bestimmen.

        Ich habe einen Dachverband auf Domain B, der die Veranstaltungen "seiner" Mitglieder auf seiner Seite zeigen möchte. Doch die Datenbank dazu ist auf Domain A.

        Verstehe ich dich richtig? Der Betreiber der Domain B will einen Ausschnitt der Datenbank von A, nämlich ausschließlich die Konzerte seiner Mitglieder, anzeigen.

        Klar kann ich die Datenbank A von B aus erreichen. Aber soll ich bei B nochmals die notwendigen Programme installieren? Und bei deren Weiterentwicklung nicht vergessen, wo ich sie überall hinkopieren muss? Ich plädiere für den iframe.

        Ich plädiere gegen den Iframe und für eine API, mit der der Betreiber von B den von ihm gewünschten Ausschnitt von A erfragen und die Ergebnisse der Abfrage auf B selbst ausgeben kann. Und ja, das ist nicht mal schnell nebenbei gemacht.

        Ein weiterer Fall: Ich habe eine spezielle Fan-Seite auf Domain C. Da kann man seinen nächsten Verein auf Basis der Postleitzahl suchen. Ein Programm, das nur auf C liegt. In diesem Fall ist der Zugriff auf Datenbank bei A sinnvoll, nutzt die gespeicherten Vereine und die Geo-Koordinaten zu deren Heimatort. Also ohne iframe.

        Das geht irgendwie in Richtung API, oder?

        Mit der von Martin postulierten Bedingung, man solle „selbst die Hoheit über die Inhalte und deren Form“ haben, haben beide von dir vorgestellten Fälle allerdings nichts zu tun.

        Tschö, Auge

        --
        Wo wir Mängel selbst aufdecken, kann sich kein Gegner einnisten.
        Wolfgang Schneidewind *prust*
        1. Ich plädiere gegen den Iframe und für eine API, mit der der Betreiber von B den von ihm gewünschten Ausschnitt von A erfragen und die Ergebnisse der Abfrage auf B selbst ausgeben kann. Und ja, das ist nicht mal schnell nebenbei gemacht.

          Mir fällt da eine Lösung ein:

          Ich könnte die eigentliche Darstellung - wie bisher - als eigenständiges Dokument ausliefern, setze darin eine Start- und eine Ende- Marke des "nackten" Inhalts und muss dazu natürlich noch ein abgespecktes CSS anbieten.

          Doch dann entfällt z.B. die Möglichkeit, den Zeitraum zu wählen, zu blättern, die Sprache zu ändern, ...

          Das müsste die Mantel-Seite dann nachstellen. Wozu das nochmal machen? Also doch iframe. http://shanty-fsd.de/termine.php

          Linuchs

          1. Hallo

            Ich plädiere gegen den Iframe und für eine API, mit der der Betreiber von B den von ihm gewünschten Ausschnitt von A erfragen und die Ergebnisse der Abfrage auf B selbst ausgeben kann. Und ja, das ist nicht mal schnell nebenbei gemacht.

            Mir fällt da eine Lösung ein:

            Ich könnte die eigentliche Darstellung - wie bisher - als eigenständiges Dokument ausliefern, setze darin eine Start- und eine Ende- Marke des "nackten" Inhalts und muss dazu natürlich noch ein abgespecktes CSS anbieten.

            Doch dann entfällt z.B. die Möglichkeit, den Zeitraum zu wählen, zu blättern, die Sprache zu ändern, ...

            Also fiel dir keine Lösung ein.

            Das müsste die Mantel-Seite dann nachstellen. Wozu das nochmal machen? Also doch iframe. http://shanty-fsd.de/termine.php

            Du hast Lösung A, dir wird Alternativlösung B vorgeschlagen und weil C nicht funktioniert, bleibst du bei A. Verschwendete Energie.

            Tschö, Auge

            --
            Wo wir Mängel selbst aufdecken, kann sich kein Gegner einnisten.
            Wolfgang Schneidewind *prust*
  2. Hallo

    iFrames sind doch veraltet und sollten nichtmehr verwendet werden oder liege ich da falsch?

    So radikal liegst du falsch.

    iFrames sind nicht veraltet. Sie sollten nicht mit Frames verwechselt werden.

    Sie sollten aber nur für die Aufgaben verwendet werden, für die sie gedacht sind.

    Wenn die von dir verlinkte Seite auch ohne iFrames funktioniert sollte auf das iFrame verzichtet werden.

    Gruss

    MrMurphy

  3. iFrames sind doch veraltet und sollten nichtmehr verwendet werden oder liege ich da falsch?

    Der große Vorteil, solche "Widgets" über iFrames zu realisieren, ist die Immunität gegenüber den Zuständen im einbindenden Dokument. Kein CSS / JavaScript kann hier das iFrame-Dokument beinträchten (einzige Ausnahme: die iFrame-Definition selbst). Das bringt eine ganze Menge Stabilität.

    1. Kein CSS / JavaScript kann hier das iFrame-Dokument beinträchten (einzige Ausnahme: die iFrame-Definition selbst).

      Hast du bitte ein Beispiel, wie das Dokument im iframe die Höhe des eigenen iframe anpassen kann?

      Weil das angeblich nicht ging, habe ich vor Jahren ein kompliziertes Prozedere entwickelt:

      • Iframe-Dokument meldet nach dem Laden seine Höhe per Ajax an seinen Vater-Server (dieselbe Domain).
      • der erstellt ein img mit genau dieser Höhe.
      • Parent-Dokument bekommt mit, dass der iframe Inhalt geladen ist, wartet noch einen Moment und holt sich das Bild vom Fremd-Server.
      • Überträgt die Höhe des Bildes auf die Höhe des Iframe.

      Soweit, so kompliziert. Doch wenn im iframe ein neues Dokument geladen wird, merkt das parent-Dokument nichts davon, der iframe ist nun unnötig hoch oder bekommt Scrollbalken.

      Linuchs

      1. [...] Soweit, so kompliziert. Doch wenn im iframe ein neues Dokument geladen wird, merkt das parent-Dokument nichts davon, der iframe ist nun unnötig hoch oder bekommt Scrollbalken.

        Wie Du richtig erkannt hast, hat die Lösung via iFrame nicht nur Vorteile. Der Königsweg wäre der von Auge propagierte, mittels einer dezidierten API. Nur dar man mehr als skeptisch sein, ob die ein Verein implementieren wird. Das "Script SRC" in die Seite zu knallen, geht halt irgendwie einfacher und schneller.

        Die von Dir skizzierten Probleme lassen sich jedoch lösen, auch deutlich einfacher / eleganter, als von Dir beschrieben:

        https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS

        Ob sich das dann am Ende so richtig gut anfühlen wird? Da darf man skeptisch sein. Die Seiteninhalte springen dann ja willkürlich hin und her.

        1. Hallo

          Wie Du richtig erkannt hast, hat die Lösung via iFrame nicht nur Vorteile. Der Königsweg wäre der von Auge propagierte, mittels einer dezidierten API. Nur dar man mehr als skeptisch sein, ob die ein Verein implementieren wird.

          Wenn das von vorn bis hinten durchdacht wird, muss man einem Kunden die Programmierung nicht einmal aufbürden. Was spricht dagegen, eine Beispielimplementierung, z.B. in Form eines PHP-Skripts, anzubieten, was „nur“ in die Seite eingebaut werden muss [1] und Interessierten immernoch die Möglichkeit des Programmierens auf Basis einer gut verständlichen (weil wir ja „nebenan“ gerade beim Thema waren) API-Doku offen zu lassen? Ob das zu Linuchs' Zielpublikum von Shanty-Chören passt, sei mal dahingestellt.

          Tschö, Auge

          --
          Wo wir Mängel selbst aufdecken, kann sich kein Gegner einnisten.
          Wolfgang Schneidewind *prust*

          1. Ich weiß, ich weiß, selbst das überfordert nicht Wenige. Im Zweifelsfall sollte das mit weitergehenden Angeboten unterfüttert werden. ↩︎

      2. Hallo,

        Hast du bitte ein Beispiel, wie das Dokument im iframe die Höhe des eigenen iframe anpassen kann?

        genau das würde ich normalerweise nicht wollen. Es ist doch gerade einer der Vorteile von iframes, dass beliebige Inhalte in einem "Fenster" dargestellt werden, dessen Größe ich genau festlegen kann, so dass sie zum Gesamtlayout passt und selbiges nicht "stört".

        So long,
         Martin

        --
        Nothing travels faster than the speed of light with the possible exception of bad news, which obeys its own special laws.
        - Douglas Adams, The Hitchhiker's Guide To The Galaxy
      3. Hast du bitte ein Beispiel, wie das Dokument im iframe die Höhe des eigenen iframe anpassen kann?

        Weil das angeblich nicht ging, habe ich vor Jahren ein kompliziertes Prozedere entwickelt:

        Seit Jahren gibt es schon Cross-Window-Kommunikation zwischen Domains:

        • Iframe-Dokument meldet nach dem Laden seine Höhe per Ajax an seinen Vater-Server (dieselbe Domain).
        • der erstellt ein img mit genau dieser Höhe.
        • Parent-Dokument bekommt mit, dass der iframe Inhalt geladen ist, wartet noch einen Moment und holt sich das Bild vom Fremd-Server.
        • Überträgt die Höhe des Bildes auf die Höhe des Iframe.

        Das ist wirklich übermäßig kompliziert… postMessage wird doch schon seit IE 8 unterstützt.

  4. Ob iFrames noch sinnig sind? Ja natürlich sind die sinnvoll.

    Überlege mal wieviele Inhalte man erst durch Inlineframing, ohne Rechtsverletzungen Dritter auf seiner Seite darstellen kann.

    2014 haben die Richter vom Europäischen Gerichtshof entschieden, dass es zulässig ist fremde Inhalte bei sich einzubinden, wenn man diese nicht vervielfältigt. Wer sich dafür interessiert, kennt die genauen Punkte. Und der Rest sollte sich nicht wundern, wenn er Probleme dank dem Urheberrechtsverstoß hat.