MarcoTSK: iframe nachladen - target="iframe"

Hallo

Ich habe eigentlich das gleiche Problem wie z.B. hier beschrieben: http://forum.de.selfhtml.org/archiv/2003/2/t37215/

Allerdings mit einer Abweichung, daher mein Beitrag.

Ich habe eine Index.htm  mit einigen Bildern im Menü. Ich rufe nun die einzelnen Unterseiten wie z.B. die F_Impressum.htm über foglenden Befehl auf:

<a href="F_Impressum.htm" onClick="logo1();" target="iframe" class="Stil3">

So dass um das Menü rum die einzelnen Seiten geladen werden.

Nun wollte ich wie in dem gelinkten Artikel die Seiten nachladen, habe aber das Problem, dass ich nicht weiß wie/wo ich dies hier einbauen muss:

<iframe name="iframe_name" id="iframe_name" src="iframe.html">

LG Marco

  1. Hallo,

    Nun wollte ich wie in dem gelinkten Artikel die Seiten nachladen, habe aber das Problem, dass ich nicht weiß wie/wo ich dies hier einbauen muss:

    <iframe name="iframe_name" id="iframe_name" src="iframe.html">

    Nirgendwo, schließlich hast du schon ein Dokument, in der ein iframe-Element steht. In das und alle Dokumente, die im iframe erscheinen, musst du noch JavaScript einbauen. Such besser nach »Frameset nachladen«, da findest du einige Scripte, die das leisten. (Die sind zwar für Framesets, aber den iframe spricht man genauso an die Frames eines Framesets, über window.frames.name, und sie funktionieren konzeptionell gleich).

    Mathias

    1. Danke das habe ich auch schon gemacht. Mein größtest Problem ist, dass ich nur absolutes Basiswissen habe und alles Nachlesen muss.

      Habe sogar als erstes es mit dem Frameset probiert z.B. nach dieser Anleitung:
      http://www.java-fun.de/java/scrips/fenster/framesetnachladen.htm

      Ich habe dann den Code einfach in beispielsweise F_Impressum.htm kopiert. Wenn ich nun die Datei direkt aufrufe, kommt auch die Meldung, dass überprüft wird ob das Frameset nachgeladen werden muss, aber es läd sich dann nur die Indexseite. Ich habe folgenden Code verwendet:

      <html>

      <head>

      </head>
      <script language="JavaScript">
      <!--
      var ZielDatei = "http://meine_url.de/index.htm";

      if (!top.FramesetGeladen){
      if(document.images)
      top.location.replace(F_Impressum.htm);
      else
      top.location.href = F_Impressum.htm ;
      }
      //-->
      </script>

      <body bgcolor="#000000">
      <p align="center"><font color="#FFFFFF"><b>Es wird überprüft ob das Frameset
      nachgeladen werden muß</b></font></p>
      </body>

      </html>

      1. Hallo,

        var ZielDatei = "http://meine_url.de/index.htm";

        if (!top.FramesetGeladen){
        if(document.images)
        top.location.replace(F_Impressum.htm);
        else
        top.location.href = F_Impressum.htm ;
        }

        Da hast du etwas missverstanden. Das Konzept geht so:

        Auf den Unterseiten, d.h. den Dokumenten, die im iframe angezeigt werden, d.h. den Dokumente, die nicht einzeln angezeigt werden sollen, wird überprüft, ob ein übergeordnetes Dokument existiert oder ob das Dokument bereits das oberste ist (top).

        Wenn es nicht das oberste ist, soll zum Dokument weitergeleitet werden, das das Unterdokument im iframe einbindet. Das übergeordnete Dokument mit dem iframe-Element muss dazu aber wissen, welches Dokument es ins iframe laden soll. Dazu wird ihm die Adresse des Unterdokuments im Query-String übergeben. Das JavaScript im übergeordneten Dokument hat darauf über location.search Zugriff, liest die Adresse aus und weist sie dem iframe zu.

        Der obige Code ist für die Unterdokumente da. F_Impressum.htm macht da kein Sinn, denn F_Impressum.htm ist das gegenwärtige Dokument. Da sollte wieder die Variable ZielDatei stehen. Und die wird obigen mit einem String gefüllt. Da sollte die Adresse des übergeordneten Dokumentes hinein.

        Was der obige Code nicht leistet, ist die Weitergabe der Adresse des Unterdokuments. Du brauchst halt wie gesagt zwei Scripte, eins in allen Unterdokumenten, eins im übergeordneten. Siehe z.B. das hier: http://www.starhtml.de/frameset.htm. Mal angepasst und vereinfacht:

        Unterdokumente:

        <script type="text/javascript">  
        [code lang=javascript]if (window != top) { // Prüfe, ob bereits oberstes Dokument  
          var neueAdresse = "[übergeordnetes Dokument]?" + location.href; // Setze Adresse zum übergeordneten Dokument mit Parameter zusammen  
          top.location.replace(neueAdresse); // Weiterleiten  
        }
        

        </script>[/code]

        Übergeordnetes Dokument:

        <script type="text/javascript">  
        [code lang=javascript]function befülleIframe () {  
          if (location.search != "") { // Wurde ein Parameter übergeben?  
            var iframeAdresse = location.search.substring(1); // Extrahiere  
            window.frames.iframe.location.replace(iframeAdresse); // Ändere das im iframe dargestellte Dokument  
          }  
        }  
        window.onload = befülleIframe; // Nach dem erfolgreichen Laden ausführen
        

        </script>[/code]

        Mit <iframe name="iframe"></iframe>

        Mathias

        1. Hallo

          Sorry aber da stehen zuviele Wörter zum Nachlesen drin ;)

          Also ich versuche mal für nen Laien (also mich) zu übersetzen:

          In z.B. F_Impressum.htm baue ich das ein:

          <script type="text/javascript">
          if (window != top) { // Prüfe, ob bereits oberstes Dokument
            var neueAdresse = "[http://www.meineurl.de/index.htm]?" + location.href; // Setze Adresse zum übergeordneten Dokument mit Parameter zusammen
            top.location.replace(neueAdresse); // Weiterleiten
          }
          </script>
          <style type="text/css">

          In die index.htm baue ich das ein:

          <script type="text/javascript">
          function befülleIframe () {
            if (location.search != "") { // Wurde ein Parameter übergeben?
              var iframeAdresse = location.search.substring(1); // Extrahiere
              window.frames.iframe.location.replace(iframeAdresse); // Ändere das im iframe dargestellte Dokument
            }
          }
          window.onload = befülleIframe; // Nach dem erfolgreichen Laden ausführen
          </script>

          Nur was mache ich damit: <iframe name="iframe"></iframe>

          Stimmt das so?

          Übrigens wichtig: DANKE FÜR DEN SUPPORT. Ist nicht selbstverständlich

          LG Marco

          1. Hallo,

            In z.B. F_Impressum.htm baue ich das ein:

            Ja.

            <script type="text/javascript">
            if (window != top) { // Prüfe, ob bereits oberstes Dokument

            Das ist übrigens Unsinn von mir, das muss selbstverständlich window == top heißen.
            Wenn window nicht gleich top ist, ist ja alles in bester Ordnung.

            var neueAdresse = "[http://www.meineurl.de/index.htm]?" + location.href;

            Die eckigen Klammern müssen natürlich raus, ansonsten stimmt das.

            In die index.htm baue ich das ein:

            Japp.

            Nur was mache ich damit: <iframe name="iframe"></iframe>

            Die kommt in index.htm. Beziehungsweise da ist so ein Element schon, wenn ich dich richtig verstanden habe.

            (Ich dachte, du könntest mir Aufschluss darüber geben, wie deine Dateien aufgebaut sind - ich kenne sie ja nicht. ;))

            Mathias

          2. Vielen, vielen danke!

            LG Marco