Frank Albrecht: Frame-Aktualisierung mit onLoad

Danke für die bisherige Unterstützung. Nach dem Muster der tedi.htm habe ich jetzt was gebastelt. Nebenbemerkung: wenn ich gleich mit einem Verweis anfange, anstatt erst mal soetwas wie eine Überschrift (mit "nothing") einzubauen funktioniert der erste Verweis nicht. Gibt es da eine Lösung?
Nun aber das Problem: Da ich nun schon dieses Skript eingebaut habe, muß ich ja wohl den "OnLoad" Befehl benutzen, um dnn mit dem Link über ein Drop-Down-Menü zwei Frames gleichzeitig zu aktualisieren.
Ich habe also drei Frames: zwei links und das Hauptframe rechts. Im unteren links sind ie Drop-Down-Menüs, die den Frame rechts beeinflussen (siehe tedi-htm). Jetzt möchte ich aber gleichzeitig auch den linken oberen Frame mit dem Aufruf der rechten Seite verknüpfen ohne das in tedi-htm beschriebene Script zu verlängern. Also habe ich mir gedacht, wenn das rechte Frame erneuert wird, sollte es auch automatisch den Frame links oben erneuern. Also "OnLoad" in der Datei, die rechts geladen wird, soweit ich das bisher kapiert habe. Wer weiß den Code dafür?
Dritter Teil der Frage: da ich links oben dann immer ein Bild laden will (andstatt einem Verweis auf eine Datei) und dies Bild unterschiedliche Größen hat, erscheint der Hintergrund in diesem Frame dann immer in Weiß (was auf der Grundeinstellung des Browers beruht). Kann ich diese Hintergrundfarbe für das angezeigte Bild auch schon im Link <a href="*.*"></a> oder in dem im "Head" enthaltenen Befehl <base target="bilder"> festlegen?
Für Hilfe wäre ich dankbar.
Beste Grüße Frank

  1. Hallo Frank,

    wenn ich gleich mit einem Verweis anfange, anstatt erst mal soetwas wie eine Überschrift (mit "nothing") einzubauen funktioniert der erste Verweis nicht. Gibt es da eine Lösung?

    Kannst die Funktion ja auch viel einfacher gestalten:
    function Go(x)  
    {    
    parent.frames[1].location.href = x;
    }
    Fertig aus.

    Nun aber das Problem: Da ich nun schon dieses Skript eingebaut habe, muß ich ja wohl den "OnLoad" Befehl benutzen, um dnn mit dem Link über ein Drop-Down-Menü zwei Frames gleichzeitig zu aktualisieren.

    Hmm, weiss nicht genau was Du jetzt damit meinst, aber nehmen wir mal die obige Funktion. Ein Befehl mehr, und schon hast du mehr oder weniger die beruehmte Zwei-Frames-Funktion. Natuerlich kannst Du bei <select> nur einen Wert uebergeben, naemlich den value der ausgewaehlten <option>. Aber fuer den kannst Du Dir ja eine Konvention ueberlegen, dass darin zwei URLs vorkommen.

    Beispiel Teil 1 - die neue Funktion:

    function Go(x)  
    {
    url = x.split("|");
    parent.frames[1].location.href = url[0];
    parent.frames[2].location.href = url[1];
    }

    Beispiel Teil 2 - die Auswahlliste:

    <form>
    <select size=1 name="Auswahl" onChange=
    "Go(this.form.Auswahl.options[this.form.Auswahl.options.selectedIndex].value)">
    <option value="home.htm|home2.htm">Titel-Datei
    <option value="about.htm|about2.htm">About me
    <option value="links.htm|links2.htm">Meine Links
    </select>

    Dritter Teil der Frage: ... Kann ich diese Hintergrundfarbe für das angezeigte Bild auch schon im Link <a href="*.*"></a> oder in dem im "Head" enthaltenen Befehl <base target="bilder"> festlegen?

    Nein. Da bleibt nur, eine HTML-Datei anstelle des Bildes in den Frame zu laden, die das Bild referenziert. Mit JavaScript kannst Du zwar nachtraeglich die Hintergrundfarbe eines "Dokuments" aendern. Beispiel:
    parent.frames[1].document.bgColor = "#FFDDCC";
    Aber ob das auch funktionier, wenn dort als "document" nur ein Bild ist, hab ich noch nicht probiert.

    Viele Gruesse
      Stefan Muenz

    1. Hallo, alle!

      Dritter Teil der Frage: ... Kann ich diese Hintergrundfarbe für das angezeigte Bild auch schon im Link <a href="*.*"></a> oder in dem im "Head" enthaltenen Befehl <base target="bilder"> festlegen?

      Nein. Da bleibt nur, eine HTML-Datei anstelle des Bildes in den Frame zu laden, die das Bild referenziert. Mit JavaScript kannst Du zwar nachtraeglich die Hintergrundfarbe eines "Dokuments" aendern. Beispiel:
      parent.frames[1].document.bgColor = "#FFDDCC";
      Aber ob das auch funktionier, wenn dort als "document" nur ein Bild ist, hab ich noch nicht probiert.

      Ich würde auch die Methode mit einer HTML-Datei empfehlen. Es gibt auch Browser (z. b. der NS3 bei uns im Sun-Pool), der bei Bilddateien, die direkt verlinkt werden, XV als externen Betrachter startet (wie ein Download-Link). Da würde dann in deinem Frame die alte Seite bleiben, und ein eigenes Fenster mit deinem Bild geöffnet.

      markus

    2. Lieber Herr Münz,

      besten Dank für Ihre Antwort. Das von Ihnen angegebene Script kann ich jedoch nicht verwenden, da in dem Dropdown-Menu auch Links enthalten sind, bei denen sich nur ein Frame ändern soll.

      Ich suche also immer noch ein Script, das mit onLoad automatisch einen anderen Frame verändert und das ich mit onUnload dann wieder zurücknehmen kann.

      Ich meine etwas in der Art wie:

      <body stylesrc="_private/style.htm" ; onLoad="window.geladen = true;">
      <script language="JavaScript">  <!--  
         if (window.geladen == true)     {
         parent.frames[0].location.href = "../images/benn.jpg"; }
           //--> </script>

      Nur funktioniert das leider nicht.

      Wer weiß Abhilfe?

      Beste Grüße Frank

      1. Hallo,

        Ich suche also immer noch ein Script, das mit onLoad automatisch einen anderen Frame verändert und das ich mit onUnload dann wieder zurücknehmen kann.
        Ich meine etwas in der Art wie:
        <body stylesrc="_private/style.htm" ; onLoad="window.geladen = true;">
        <script language="JavaScript">  <!--  
           if (window.geladen == true)     {
           parent.frames[0].location.href = "../images/benn.jpg"; }
             //--> </script>
        Nur funktioniert das leider nicht.

        Das kann so nicht klappen.
        Der Scriptblock, so wie er dort steht, wird nur 1x ausgefuehrt, naemlich waehrend des Ladens, dann nie wieder. Und in dem Moment ist Variable geladen halt noch nicht true, also passiert gar nichts.
        Mach's mal so:
        <HEAD><TITLE></TITLE>
        <script language="JavaScript">  
        <!--  
        merk_dir_den URL = "";
        function lade()
        {
           if (parent.frames[0])
           {
              merk_dir_den_URL = parent.frames[0].location.href;
              parent.frames[0].location.href = "../images/benn.jpg";
           }
        }
        function entlade()
        {
           if (merk_dir_den_URL != "")
              parent.frames[0].location.href = merk_dir_den_URL;
        }
        </HEAD>
        <BODY onload="lade()" onunload="entlade()">
        usw. usw. usw.
        </BODY>
        </HTML>

        Christine

        1. Hallo Christine,

          danke für Deinen Typ, nach minimalen Umbauarbeiten funktioniert das prima!

          Hier nun der endgültige Script zum Nachmachen für die anderen:

          <title>Gottfried Benn - Der Stadtarzt</title>
          <script language="JavaScript">  
          <!--  
          merk_dir_den_URL = "";
          function lade()
          {
             if (parent.frames[0])
             {
                merk_dir_den_URL = parent.frames[0].location.href;
                parent.frames[0].location.href = "images/benn.jpg";
             }
          }
          function entlade()
          {
             if (merk_dir_den_URL != "")
                parent.frames[0].location.href = merk_dir_den_URL;
          }  //-->
          </script>
          </head>

          <body stylesrc="_private/style.htm" onload="lade()" onunload="entlade()">

          Das Ganze ist dann demnächst auf
          http://members.aol.com/fmalbrecht
          zu besichtigen.

          Nochmals danke, dies Forum ist echt Klsse, ich hoffe uch mal jemnd helfen zu können.

          Liebe Grüße
          Frank