Enrico: iframe wird nicht angezeigt

Hallo,

ich versuche, in eine html-Datei einen eingebetteten Frame einzubinden, allerdings wird er nicht angezeigt und ich weiß nicht, warum.

Ich will alle Dateien, die über meine Links aufgerufen werden können, deshalb in einem iframe darstellen lassen, um nicht bei jeder Seitenauswahl die zum Teil sehr umfangreichen css- und Javascript-Dateien immer wieder mitladen zu müssen, sondern mich somit auf die verbleibenden wenigen Definitionen der einzelnen Dateien konzentrieren zu können.

Hier die Datei, die den iframe enthält:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     <html>
        <head>

...

<link rel="stylesheet" href="Dateien/Formatierungen_3.css" type="text/css" media="all"/>
        </head>
        <body scroll="no">
           <div class="Tafel_Container">

...

<iframe class="Anzeigebereich" src="Dateien/Seite_Gaestebuch_Formular.php"></iframe>

...

</div>
        </body>
     </html>

Der div-Bereich "Tafel_Container" ist in der Datei "Formatierungen_3.css" folgendermassen definiert:

iframe.Anzeigebereich
     {
        background: brown; // Nur zu Testzwecken
        height:     100%;
        margin:     45px 30px 45px 30px;
        width:      100%;
     }

D.h. der iframe soll sich auf die Breite und Höhe des umgebenden div-Bereichs "Tafel_Container" ausdehnen.

Ich habe es auch alternativ über folgende Definitionen versucht, allerdings ebenfalls ohne Erfolg:

iframe.Anzeigebereich
     {
        background: brown; // Nur zu Testzwecken
        bottom:   45px;
        left:     30px;
        position: absolute;
        right:    30px;
        top:      45px;
     }

Ich hoffe, diese Angaben bzw. Code-Ausschnitte reichen zur Fehlersuche, denn einen Online-Link kann ich leider nicht bieten, da ich die Seite derzeit lokal entwerfe.

Vielen Dank schon mal für eure Unterstützung.

Ich freue mich auf eure Antworten :-)

Gruß
Enrico

  1. um nicht bei jeder Seitenauswahl die zum Teil sehr umfangreichen css- und Javascript-Dateien immer wieder mitladen zu müssen

    Dafür gibt's den Browser-Cache, dein IFrame ist demnach überflüssig

    1. Hallo gast42,

      erstmal Danke für Deine Antwort.

      Dafür gibt's den Browser-Cache, dein IFrame ist demnach überflüssig

      Ok, da hast Du recht, aber trotzdem hätte ich Anweisungen, die, auch wenn sie schon im Cache hinterlegt sind, vorausgesetzt, der Besucher hat den Cache nicht abgeschaltet oder dergleichen, immer wieder "mitgezogen" werden müssen.

      Wäre es nicht performanter, dies zu umgehen?

      Deshalb meine Vorstellung mit dem iframe.

      Abgesehen davon, dass Du meinen iframe als überflüssig hältst, aus, aus Deiner Sicht, nachvollziehbarem Grund, hast Du einen Anhaltspunkt, warum er nicht angezeigt wird?

      Gruß
      Enrico

      1. hätte ich Anweisungen, die ... immer wieder "mitgezogen" werden müssen.
        Wäre es nicht performanter, dies zu umgehen?

        a) was sollen das für Anweisungen sein?
        b) umgehen ist natürlich "performanter", sorg einfach dafür, dass sie gecacht werden!

        ... hast Du einen Anhaltspunkt, warum er nicht angezeigt wird?

        wie groß ist das umgebende DIV?

        1. Hallo gast42,

          wie groß ist das umgebende DIV?

          Die css-Anweisungen für das umgebende div lauten folgendermassen:

          div.Tafel_Container
               {
                  height:   100%;
                  left:     50%;
                  margin:   0px 0px 0px -450px;
                  position: absolute;
                  top:      0px;
                  width:    900px;
               }

          Dies heisst, das div dehnt sich auf die komplette Bildschirmhöhe aus und wird mit fester Breitenangabe in Bildschirmmitte zentriert.

          Gruß
          Enrico

          1. Hallo,

            wie groß ist das umgebende DIV?
                 div.Tafel_Container
                 {
                    height:   100%;
                    left:     50%;
                    margin:   0px 0px 0px -450px;
                    position: absolute;
                    top:      0px;
                    width:    900px;
                 }
            Dies heisst, das div dehnt sich auf die komplette Bildschirmhöhe aus ...

            äh, nein. Gib ihm mal einen Rahmen oder eine Hintergrundfarbe, um zu sehen, wie groß es wirklich ist.
            Das heißt nur, es nimmt 100% der Höhe seines Elternelements ein. Nach dem Codeausschnitt aus dem Startposting wäre das Elternelement body. Für body hast du aber keine Höhe angegeben, es ist also nur so hoch, wie es sein Inhalt erfordert. Allerdings ist das div-Element absolut positioniert und damit sowieso aus der gegenseitigen Größenanpassung herausgelöst. Folge: body hat die Höhe 0, das div-Element 100% davon, also auch 0.

            So long,
             Martin

            --
            F: Was ist ekliger als ein angebissener Apfel mit einem Wurm drin?
            A: Ein angebissener Apfel mit einem halben Wurm.
            Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
            1. Hallo Martin,

              gut, ich sehe schon, meine formulierte Hoffnung, dass meine hier aufgezählten Angaben ausreichend wären, war berechtigt ;-)

              body hat die Höhe 0, das div-Element 100% davon, also auch 0.

              html und body habe ich wie folgt festgelegt:

              html,
                   body
                   {
                      background:  url(../Grafiken/Layout/Holzplanken.png) repeat;
                      height:      100%;
                      margin:      0px;
                      overflow:    hidden;
                      padding:     0px;
                      width:       100%;
                   }

              Allerdings ist das div-Element [...] aus der gegenseitigen Größenanpassung herausgelöst

              Heißt das, "relative" statt "absolute" wäre die Lösung?

              Gruß
              Enrico

              1. @@Enrico:

                nuqneH

                Heißt das, "relative" statt "absolute" wäre die Lösung?

                Kein Iframe wäre die Lösung. Warum verplemperst du deine Zeit?

                Qapla'

                --
                Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
                (Mark Twain)
                1. *Schwupp* Und schon wieder Hallo Gunnar ;-)

                  Kein Iframe wäre die Lösung. Warum verplemperst du deine Zeit?

                  Wie ich oben auf Deine Antwort schon geschrieben habe:

                  Wenn ich wüsste, wie ich einen div über php mit html-Code füllen kann, dann würde ich ganz klar ein div bevorzugen.

                  Gruß
                  Enrico

  2. @@Enrico:

    nuqneH

    Ich will alle Dateien, die über meine Links aufgerufen werden können, deshalb in einem iframe darstellen lassen, um nicht bei jeder Seitenauswahl die zum Teil sehr umfangreichen css- und Javascript-Dateien immer wieder mitladen zu müssen

    Das werden sie sowieso nicht, da sie von Browser gecachet werden.

    Mit (I)Frames stellt du die Nutzern deiner Seite vor Probleme. [subotnik, molily] Verzichte auf (I)Frames; bei Bedarf kannst du Quelltext auslagern.

    Und schon wieder hat sich ein Problem in Luft aufgelöst.

    Qapla'

    --
    Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
    (Mark Twain)
    1. Hallo Gunnar,

      ich verwende ja auch nur einen einzigen iframe, da ich mir der Problematiken von framesets bewußt bin.

      Wenn ich eine funktionierende Möglichkeit hätte, den zuvor verwendeten div (ich habe den div dann gegen einen [noch nicht "funktionierenden"] iframe ausgetauscht) mit html-Code füllen zu können, wobei aus Wissenstandsgründen nur php in Frage kommt, dann wäre dies Grund genug für mich, den iframe wieder zu ersetzen.

      Gruß
      Enrico

      1. @@Enrico:

        nuqneH

        Wenn ich eine funktionierende Möglichkeit hätte, den zuvor verwendeten div […] mit html-Code füllen zu können

        DI hatte ich dir genannt. Gehe zurück in die Badstraße.

        wobei aus Wissenstandsgründen nur php in Frage kommt

        Ja auch mit PHP ist dies möglich. Wobei du deinen Wissensstand auch gerne auf SSI erweitern kannst.

        Qapla'

        --
        Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
        (Mark Twain)
        1. Hallo Gunnar,

          ok, das hatte ich überlesen, aber (überflugsweise) jetzt nachgeholt.

          Mir ist aufgefallen, dass abgeraten wird, komplette html-Dateien zu integrieren, unabhängig der gewählten "Art".

          Ist der Aufwand, html zu "includen" (meine css-, php- und js-Dateien habe ich ausgelagert), nicht wesentlich höher als einen iframe zu verwenden?

          Gruß
          Enrico

          1. @@Enrico:

            nuqneH

            Mir ist aufgefallen, dass abgeraten wird, komplette html-Dateien zu integrieren, unabhängig der gewählten "Art".

            Wenn deine Seite so aussieht

            <!DOCTYPE html>  
            <html>  
              <head>  
                <title>Meine Seite</title>  
              </head>  
              <body>  
            <?php [code lang=php]readfile("foo.inc");
            ~~~ ?>  
              </body>  
            </html>[/code]  
              
            dann darf die Datei foo.inc nicht so aussehen  
              
            ~~~html
            <!DOCTYPE html>  
            <html>  
              <head>  
                <title>Mein Include</title>  
              </head>  
              <body>  
                <p>Das wird eingefügt.</p>  
              </body>  
            </html>
            

            sonst würde ja das rauskommen:

            <!DOCTYPE html>  
            <html>  
              <head>  
                <title>Meine Seite</title>  
              </head>  
              <body>  
            <!DOCTYPE html>  
            <html>  
              <head>  
                <title>Mein Include</title>  
              </head>  
              <body>  
                <p>Das wird eingefügt.</p>  
              </body>  
            </html>  
              </body>  
            </html>
            

            und das wäre natürlich falsch.

            In foo.inc steht nur das, was an der jeweiligen Stelle eingefügt werden soll:

            <p>Das wird eingefügt.</p>

            Dann kommt das Richtige raus:

            <!DOCTYPE html>  
            <html>  
              <head>  
                <title>Meine Seite</title>  
              </head>  
              <body>  
                <p>Das wird eingefügt.</p>  
              </body>  
            </html>
            

            Ist der Aufwand, html zu "includen" (meine css-, php- und js-Dateien habe ich ausgelagert), nicht wesentlich höher als einen iframe zu verwenden?

            Nein.

            Qapla'

            --
            Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
            (Mark Twain)
            1. Hallo Gunnar,

              In foo.inc steht nur das, was an der jeweiligen Stelle eingefügt werden soll

              Bedeutet das auf der anderen Seite, dass das Eingefügte auch die Definitionen aus dem Stylesheet übernimmt?

              Ich denke schon, da ja serverseitig das *eine* html-Dokument erstellt wird.

              Ok, interessanter Ansatz.

              Dann werde ich versuchen, dies umzusetzen, wobei ich mich von dem Gedanken lösen muss, dass die eingebundenen Dateien beim Aufrufen der php-Datei ("Gerüst-Datei") und Einbinden des zum jeweiligen Link zugehörigen html-Code (ohne <head> etc.) keinen erneuten Traffic verursachen.

              Gruß
              Enrico

              1. Hallo Gunnar,

                jetzt denke habe ich es komplett (?) umrissen, was der Vorteil ist.

                Ich kann ja auch, in Abhängig des an die URL übergebenen Parameters, zusätzliche Stylesheets einbinden oder nicht und den Code so immer auf das jeweils Benötigte beschränken und muss damit nur das immerwährende erneute Laden von Standard-Definitionen für das Layout in Kauf nehmen, wobei das ja auch kein Thema sein sollte, da die Seiten ja gecached werden.

                Gut, gut, fein, fein :-)

                Gruß
                Enrico

                1. @@Enrico:

                  nuqneH

                  Ich kann ja auch, in Abhängig des an die URL übergebenen Parameters, zusätzliche Stylesheets einbinden

                  Das ist nicht empfehlenswert. Es sollte nicht mehrere Stylesheets eingebunden werden, sondern genau eins. [PERFORMANCE-BP1]

                  Du kannst natürlish auch ein Stylesheet serverseitg aus Einzelteilen zusammensetzen. Wenn du aber mehrere verschiedene (aus verschiedenen Einzelteilen) bestehende Stylesheets (mit verschiedenen URIs) hast, ist es mit dem Browsercaching vorbei.

                  Wenn du für verschiedene Seiten deiner Website verschiedene Stile benötigst, schreinbst du sie besser alle in das _eine_ Stylesheet. Du gibst dem 'html'- oder 'body'-Element eine ID bzw. Klasse und benutzst den Nachfahrenselektor.

                  Qapla'

                  --
                  Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
                  (Mark Twain)
                  1. Hallo Gunnar,

                    sorry, war in CorelDRAW unterwegs ;-)

                    Wenn du für verschiedene Seiten deiner Website verschiedene Stile benötigst

                    Naja, verschiedene ist nicht ganz richtig, aber es gibt Seiten (bsp. das Gästebuch-Formular), das ergänzende Angaben benötigt und dafür habe ich ein eigenes Stylesheet erstellt, das ich dann nur bei der Gästebuch-Seite eingebunden hätte, aber wenn ein einziges, das dann gecached ist, besser ist, dann machen wir das eben so :-)

                    Gruß
                    Enrico

                    1. @@Enrico:

                      nuqneH

                      Naja, verschiedene ist nicht ganz richtig, aber es gibt Seiten (bsp. das Gästebuch-Formular), das ergänzende Angaben benötigt und dafür habe ich ein eigenes Stylesheet erstellt, das ich dann nur bei der Gästebuch-Seite eingebunden hätte, aber wenn ein einziges, das dann gecached ist, besser ist, dann machen wir das eben so :-)

                      Genau genommen hängt es davon ab, wie umfangreich die zusätzlichen Stilangaben fürs Gästebuch sind und wie groß der Anteil der Besucher deiner Website ist, die auch wirklich dein Gästebuch ansehen.

                      Sind es im Edge-Case sehr viele zusätzlichen Stilangaben und sehr wenige Besucher des Gästebuchs, dann könnte ein zusätzliches Stylesheet u.U. doch günstiger sein.

                      Qapla'

                      --
                      Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
                      (Mark Twain)
              2. @@Enrico:

                nuqneH

                Bedeutet das auf der anderen Seite, dass das Eingefügte auch die Definitionen aus dem Stylesheet übernimmt?
                Ich denke schon, da ja serverseitig das *eine* html-Dokument erstellt wird.

                Eben. Und ein Client bekommt davon überhaupt nichts mit, dass das empfangene Dokument serverseitig aus Einzelteilem zusammengesetzt wurde.

                wobei ich mich von dem Gedanken lösen muss, dass die eingebundenen Dateien beim Aufrufen der php-Datei ("Gerüst-Datei") und Einbinden des zum jeweiligen Link zugehörigen html-Code (ohne <head> etc.) keinen erneuten Traffic verursachen.

                Musst du. Die Includes verusachen keinen Traffic, da sie übers lokale Dateisystem des Servers geholt werden.

                Qapla'

                --
                Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
                (Mark Twain)