Leonhard Schmidt: Neues Frameset mit Sprungmarken innerhalb der Frames?

Wie kann ich folgendes Problem lösen:

Ich habe eine Seite mit zwei Frames (Index und Text). Ein Hyperlink soll von dieser Seite eine neue Seite mit zwei Frames (Index und Text) öffnen, wobei der Link sowohl im neuen Index als auch im neuen Text bereits zu einer bestimmten Textstelle "Ziel" führen soll.
Ich möchte aber nicht einfach die neuen Dateien in die beiden Frames laden, sondern ich möchte im Browser auch den neuen Titel und die neue Adresse angezeigt haben.

Folgendes habe ich versucht:
<SCRIPT NAME="JavaScript">
function hyperlink(URLNEU,URL1,URL2)
{top.location.href=URLNEU;
parent.frames[0].location.href=URL1;
parent.frames[1].location.href=URL2;
}
</SCRIPT>

und den Hyperlink wie folgt:

<A HREF="javascript:hyperlink'URLNEU.htm','URL1.htm#Ziel','URL2.htm#Ziel')">...</A>

wobei URLNEU das aus zwei Frames mit den Dateien URL1 und URL2 enthaltene Frameset enthält und in URL1 und URL2 Sprungmarken <A NAME=Ziel> enthalten sind.

Die Funktion öffnet zwar die Datei URLNEU und lädt URL1 und URL2 in die Frames, aber das <A NAME=Ziel></A> in URL1 und URL2 wird nicht angesteuert.
Wo liegt der Fehler?

  1. Hallo Leonhard,

    1 -- top.location.href=URLNEU;
    2 -- parent.frames[0].location.href=URL1;
    3 -- parent.frames[1].location.href=URL2;

    der Fehler liegt darin, dass nur 1 ausgeführt wird.
    Du lädtst URLNEU in den Browser. Und nun kann das Skript nicht zu Ende ausgeführt werden. Lass diese Zeile doch einfach weg.

    Bye,
    Manyak Online

    1. Hallo Manyak,

      1 -- top.location.href=URLNEU;
      2 -- parent.frames[0].location.href=URL1;
      3 -- parent.frames[1].location.href=URL2;

      der Fehler liegt darin, dass nur 1 ausgeführt wird.
      Du lädtst URLNEU in den Browser. Und nun kann das Skript nicht zu Ende ausgeführt werden. Lass diese Zeile doch einfach weg.

      Leonhard möchte doch aber die Anzeige der geänderten URL und des neuen Seitentitels im Browser erreichen. Dies wäre bei deinem Vorschlag nicht gegeben.

      Viele Grüße
        Kess

      1. Hallo Manyak,

        1 -- top.location.href=URLNEU;
        2 -- parent.frames[0].location.href=URL1;
        3 -- parent.frames[1].location.href=URL2;

        der Fehler liegt darin, dass nur 1 ausgeführt wird.
        Du lädtst URLNEU in den Browser. Und nun kann das Skript nicht zu Ende ausgeführt werden. Lass diese Zeile doch einfach weg.

        Leonhard möchte doch aber die Anzeige der geänderten URL und des neuen Seitentitels im Browser erreichen. Dies wäre bei deinem Vorschlag nicht gegeben.

        Den Seitentitel kann er doch am Ende des Skripts ändern, oder?

        Viele Grüße
          Kess

        1. Den Seitentitel kann er doch am Ende des Skripts ändern, oder?

          Wie mache ich das?

          1. Den Seitentitel kann er doch am Ende des Skripts ändern, oder?

            Wie mache ich das?

            Siehe http://www.teamone.de/selfhtml/tecbb.htm#a11
            1--Titel ändern
            2--neues Doku in Frame 1 laden
            2--neues Doku in Frame 2 laden

            1. Hi,

              Den Seitentitel kann er doch am Ende des Skripts ändern, oder?
              Wie mache ich das?
              Siehe http://www.teamone.de/selfhtml/tecbb.htm#a11

              Hm, also wenn ich diesen Link anklicke, dann steht dort "Lesen" als
              erlaubte Zugriffsmethode auf den Titel ... das reicht nicht.

              Viele Grüße
                    Michael

  2. Hallo Leonhard,

    Folgendes habe ich versucht:
    <SCRIPT NAME="JavaScript">
    function hyperlink(URLNEU,URL1,URL2)
    {top.location.href=URLNEU;
    parent.frames[0].location.href=URL1;
    parent.frames[1].location.href=URL2;
    }
    </SCRIPT>

    mit top.location.href=URLNEU; lädst du das Frameset neu, das seinerseits die Dateien URL1 und URL2 lädt. Damit ist die aktuelle Seite mit dem Link und JavaScript gar nicht mehr aktiv. In dem Moment, wo du top.location.href "überschreibst", endet das Script. Die nachfogendenden Anweisungen werden nicht mehr ausgeführt. Du mußt die Aunsteuerung der Anke in das aufgerufene Frameset URLNEU packen. Dieses muß also ULR1#Ziel1 und URL2#Ziel2 aufrufen.

    Viele Grüße
      Kess

    1. Hallo Leonhard,

      Folgendes habe ich versucht:
      <SCRIPT NAME="JavaScript">
      function hyperlink(URLNEU,URL1,URL2)
      {top.location.href=URLNEU;
      parent.frames[0].location.href=URL1;
      parent.frames[1].location.href=URL2;
      }
      </SCRIPT>

      mit top.location.href=URLNEU; lädst du das Frameset neu, das seinerseits die Dateien URL1 und URL2 lädt. Damit ist die aktuelle Seite mit dem Link und JavaScript gar nicht mehr aktiv. In dem Moment, wo du top.location.href "überschreibst", endet das Script. Die nachfogendenden Anweisungen werden nicht mehr ausgeführt. Du mußt die Aunsteuerung der Anke in das aufgerufene Frameset URLNEU packen. Dieses muß also ULR1#Ziel1 und URL2#Ziel2 aufrufen.

      Viele Grüße
        Kess

      Daß man die Anker dann ins aufgerufene Frameset packen muß, habe ich soweit verstanden. Nur: dann müßte ich für jeden Verweis ein völlig neues Frameset eröffnen! Bei einem größeren Projekt würde das heißen, dass ich z.B. bei 10 Hyperlinks entsprechend 10 neue Framesets brauche.
      Gibt es eine Möglichkeit, die angesteuerten Anker als Parameter bei Aufruf des Framesets zu übergeben, so daß dann ein JS im Frameset diese überprüft und je nachdem welche Parameter vorliegen automatisch die entsprechenden Anker ansteuert?

      Viele Grüße und vielen Dank für die guten Tips
      Leonhard Schmidt

      1. Hi,

        Daß man die Anker dann ins aufgerufene Frameset packen muß,
        habe ich soweit verstanden.
        Nur: dann müßte ich für jeden Verweis ein völlig neues Frameset
        eröffnen! Bei einem größeren Projekt würde das heißen, dass ich z.B.
        bei 10 Hyperlinks entsprechend 10 neue Framesets brauche.
        Gibt es eine Möglichkeit, die angesteuerten Anker als Parameter bei
        Aufruf des Framesets zu übergeben, so daß dann ein JS im Frameset
        diese überprüft und je nachdem welche Parameter vorliegen automatisch
        die entsprechenden Anker ansteuert?

        Du kannst das gesamte Frameset-Dokument mit JavaScript (document.write)
        dynamisch erzeugen. Zu diesem Zeitpunkt weißt Du, welche URLs in den
        <frame>-Tags drin sein sollen.

        Viele Grüße
              Michael

        1. Hi,

          Daß man die Anker dann ins aufgerufene Frameset packen muß,
          habe ich soweit verstanden.
          Nur: dann müßte ich für jeden Verweis ein völlig neues Frameset
          eröffnen! Bei einem größeren Projekt würde das heißen, dass ich z.B.
          bei 10 Hyperlinks entsprechend 10 neue Framesets brauche.
          Gibt es eine Möglichkeit, die angesteuerten Anker als Parameter bei
          Aufruf des Framesets zu übergeben, so daß dann ein JS im Frameset
          diese überprüft und je nachdem welche Parameter vorliegen automatisch
          die entsprechenden Anker ansteuert?

          Du kannst das gesamte Frameset-Dokument mit JavaScript (document.write)
          dynamisch erzeugen. Zu diesem Zeitpunkt weißt Du, welche URLs in den
          <frame>-Tags drin sein sollen.

          Viele Grüße
                Michael

          Funktioniert leider auch nicht. Auf diese Weise spreche ich zwar die Anker an, aber das dynamisch erzeugte Frameset wird nur in einem Frame des alten-Frameset erzeugt. Der andere Frame des alten Frameset bleibt unverändert (er sollte eigentlich ganz verschwinden), ebenso die URL und die Titelanzeige im Browser.

          Es geht darum: das alte Dokument mit zwei Frames soll durch ein ganz neues mit zwei Frames ersetzt werden, in diesem sollen aber durch den JS-Aufruf bereits Anker angesprochen werden, d.h. die Dokumente in den Frames sollen nicht an ihrem Beginn, sondern gleich an den Ankern geöffnet werden.

          (Au weia, da habe ich mir aber was eingebildet....)

          Viele Grüße an all die hilfreichen Geister

          Leonhard Schmidt