Detlef Knut: History bei Frames verbiegen

Hallo,

in meinem Menue aendere ich grundsaetlich zwei Frames. Wenn man jedoch auf den Back-Button klickt, wird zunächst ein Frame gewechselt, beim zweiten Klick das zweite Frame. Das moechte ich abkuerzen: So wie beim Menue-Klick zwei Frames geaendert werden soll auch mit nur einem Zurueck-Klick der vorherige Zustand hergestellt sein.

Danke.

Detlef K.

  1. Hallo,

    in meinem Menue aendere ich grundsaetlich zwei Frames. Wenn man jedoch auf den Back-Button klickt, wird zunächst ein Frame gewechselt, beim zweiten Klick das zweite Frame. Das moechte ich abkuerzen: So wie beim Menue-Klick zwei Frames geaendert werden soll auch mit nur einem Zurueck-Klick der vorherige Zustand hergestellt sein.

    Danke.

    Detlef K.

    Hi Detlef,

    liefer mir (und vielleicht uns) mal bitte die URL, denn ich kann mir im moment nicht vorstellen, was du meinst.

    Danke

    Sven

    1. liefer mir (und vielleicht uns) mal bitte die URL, denn ich kann mir im moment nicht vorstellen, was du meinst.

      http://www.maxcomsystemhaus.de

      Danke.

      Detlef K.

  2. in meinem Menue aendere ich grundsaetlich zwei Frames. Wenn man jedoch auf den Back-Button klickt, wird zunächst ein Frame gewechselt, beim zweiten Klick das zweite Frame. Das moechte ich abkuerzen: So wie beim Menue-Klick zwei Frames geaendert werden soll auch mit nur einem Zurueck-Klick der vorherige Zustand hergestellt sein.

    Du laedst die Seiten mit jeweils
        Frame.location.href = 'neue_datei.htm';
    nehme ich an.
    Dann probier mal, eine davon mit
        Frame.location.replace('neue_Datei.htm);
    zu laden.
    Sollte klappen (hab's aber nicht extra probiert).
    replace() macht naemlich keinen Eintrag in der History, wird damit bei "Back" sozusagen uebersprungen.
    Wenn das funktioniert, dann musst Du allerdings noch dafuer sorgen, dass JS1.0-Browser dort nicht hinkommen, sondern einen eigenen Weg gehen, den alten von Dir am besten. Die kennen naemlich replace() nicht und wuerden dann nur schimpfen.

    Christine

    1. Du laedst die Seiten mit jeweils
          Frame.location.href = 'neue_datei.htm';
      nehme ich an.
      Dann probier mal, eine davon mit
          Frame.location.replace('neue_Datei.htm);
      zu laden.
      Sollte klappen (hab's aber nicht extra probiert).
      replace() macht naemlich keinen Eintrag in der History, wird damit bei "Back" sozusagen uebersprungen.
      Wenn das funktioniert, dann musst Du allerdings noch dafuer sorgen, dass JS1.0-Browser dort nicht hinkommen, sondern einen eigenen Weg gehen, den alten von Dir am besten. Die kennen naemlich replace() nicht und wuerden dann nur schimpfen.

      Danke, aber scheint nach meinen Tests nichts zu bringen. IE4 bringt eine Fehlermeldung (unbekanntes objekt) und Netscape 3/4 bringt zwar keinen Fehler, aber wechselt auch nicht die Inhalte der Frames.

      Detlef K.

      1. Hallo,

        Danke, aber scheint nach meinen Tests nichts zu bringen. IE4 bringt eine Fehlermeldung (unbekanntes objekt) und Netscape 3/4 bringt zwar keinen Fehler, aber wechselt auch nicht die Inhalte der Frames.

        Dann vergleich mal bitte das, was ich geschrieben habe

        Frame.location.replace('neue_Datei.htm);

        mit dem, was ich auf Deiner Seite gefunden habe
                     parent.frames[F2].location.replace=(URL2);
        Es muesste also heissen:
                    parent.frames[F2].location.replace(URL2);
        Du hast hier Methoden und Eigenschaften durcheinandergebracht.
           href ist eine Eigenschaft, also Wert neu setzen mit href =
           replace() ist Methode, die ausgefuehrt wird, notwendige Infos dafuer ueber Parameter erhaelt.  
        Christine

        1. Danke, Christine.
          Jetzt fehlen die angezeigten Seiten in der History, aber die Inhalte der Frames werden auch nicht auf ihren urspruenglichen inhalt zurueckgesetzt.

          Uebrigens habe ich diese Funktionen in fast allen Doks. Wegen dem Interpreter kann ich die wohkl nicht an einer einzigen Stelle vereinabren?

          Detlef K.

          1. Jetzt fehlen die angezeigten Seiten in der History, aber die Inhalte der Frames werden auch nicht auf ihren urspruenglichen inhalt zurueckgesetzt.

            Stimmt, Du benutzt die legendaere ZweiFrames-Funktion. Das haette mir aber gestern auch auffallen koennen als ich in Deine Seite geguckt habe.
            Da muesste man anders rangehen. Voraussetzung allerdings, dass es Abhaengigkeiten jeweils zwischen den beiden Seiten gibt, sich also auf irgendeine Art von einer Seite aus immer ermitteln laesst, welche die dazugehoerige ist.
            Statt der ZweiFrames-Funktion kann man dann naemlich zunaechst mal ganz gewoehnliche Links benutzen, beim Laden der aufgerufenen Seite nachsehen, welche dazugehoert, die dann von da aus "nachziehen" mit replace().
            Bei "Back" sollte auf die Art die nachgezogene zuerst mal nicht beruecksichtigt werden, statt dessen gleich Zurueck fuer die zuerst aufgerufene ansprechen. In dem Moment passiert dann genau dasselbe wie auf dem Hinweg, die erste Seite zieht die zweite hinterher.
            Wenn das aufgeht, dann ergibt sich daraus IMHO noch ein anderer Vorteil: Die Links funtionieren auch ohne JavaScript, wirken sich dann aber nur auf einen Frame aus - den wichtigern eben.

            Uebrigens habe ich diese Funktionen in fast allen Doks. Wegen dem Interpreter kann ich die wohkl nicht an einer einzigen Stelle vereinabren?

            Das habe ich jetzt nicht begriffen.

            Christine

            1. Hallo Christine,
              Dein Vorschlag hoert sich kompliziert und einfach zugleich an. Muss ich mir erst durch den Kopf gehen lassen. In diesem Forum wird auch gerade ueber das Thema onLoad mit derselben Zielstellung diskutiert. Das wollte ich vielleicht auch mal ausprobieren. Dass diese Funktionalitaet insgesamt bereits ein Problem fuer das Web darstellt, hatte ich eigentlich noch nicht erwartet.

              Uebrigens habe ich diese Funktionen in fast allen Doks. Wegen dem Interpreter kann ich die wohkl nicht an einer einzigen Stelle vereinabren?

              Das habe ich jetzt nicht begriffen.

              Eigentlioch weiss ich gar nicht, welches Frame fuer die JS-Funktionen ausschlaggebend ist. Obwohl eigentlich das Menue im Navi-Frame angesprochen werden soll, gibt es Probleme, sobald die Funktion nicht im Hauptframe zu finden ist. Um solche Schwierigkeiten zunaechst zu umschiffen, habe ich alle JS-Module in allen Dokumenten im Head vereinbart. Und das ist (bzw. wird zukuenftig sein) eine Fehlerquelle ohne Ende. Habe schon probiert, alle Scripts in einer Extra-Datei abzulegen, aber das fuhnktionierte nicht so wie beschrieben (in SELFHTML), also alles wieder retour.