Jo: history in Frames

Hallo,
ich habe ein Frameset und möchte die Funktionen der history() nur für ein Zielframe nutzen. Alle Aktionen in den anderen Frames sollen ignoriert werden.
Wenn ich die Funktion nur für das Zielframe nutze dachte ich einfach  nur dieses anzusprechen, also

parent.mainFrame.history.back();

Leider werden auch die anderen Frames bei der Ausführung dieses Befehls mit eingeschlossen.
Gibts da eine Möglichkeit die historyeinträge nach Frames zu trennen oder in einem Array zu speichen?
Danke Jo

  1. Hi Jo,

    Wenn ich die Funktion nur für das Zielframe nutze dachte ich einfach  nur dieses anzusprechen, also

    parent.mainFrame.history.back();

    wie sieht denn deine Framestruktr aus und aus welchem Frame willst du welchen Frame ändern?

    Gruß
    Antipitch

    1. Hi,

      wie sieht denn deine Framestruktr aus und aus welchem Frame willst du welchen Frame ändern?

      So:
      <frameset rows="80,*,20" cols="*" frameborder="no" border="0" framespacing="0" ">
      <frame src="top.php" name="topFrame" frameborder="no" scrolling="no" id="topFrame" title="topFrame" />
      <frameset cols="280,*" frameborder="no" border="0" framespacing="0">
        <frame src="left.php" name="leftFrame" frameborder="no" scrolling="auto" id="leftFrame" title="leftFrame" />
        <frame src="main.php" name="mainFrame" frameborder="no" scrolling="no" bordercolor="#333333" id="mapFrame" title="mapFrame" />
      </frameset>
      <frame src="data.php" name="dataFrame" frameborder="no" scrolling="no" id="dataFrame" title="dataFrame" />
      </frameset>

      Ich möchte aus dem topFrame nur die Aktionen im mainFrame steuern.
      Die Änderungen im leftframe sollen nicht mitgezählt werden.
      Gruß
      Jo

      1. Hi Jo,

        muss leider ehrlich sagen, dass ich das gerade nicht erklären kann. Würde eigentlich auch denken, dass sich die Angabe nur auf den adressierten Frames auswirken sollte. Hoffen wir mal, dass jemand anderes das klären kann. Benutz zwar eigentlich keine Frames mehr, würde mich aber auch interessieren...

        Gruß
        Antipitch

        1. Hellihello,

          http://de.selfhtml.org/javascript/objekte/frames.htm#allgemeines

          es sollte gehen. Vielleicht ja mal mit

          alert (parent.frameName.id) checken, ob du wirklich den Frame richtig ansprichst?

          Dank und Gruß,

          frankx

          1. Hi Frank,

            es sollte gehen. Vielleicht ja mal mit

            alert (parent.frameName.id) checken, ob du wirklich den Frame richtig ansprichst?

            Das

            alert (parent.frameName.id)

            gibt nichts aus (window Objekt hat keine id Eigenschaft). Ansonsten hab ich die Adressierung natürlich getestet.

            parent.mainFrame.document.write('foo')
            oder
            parent.frames[3].document.write('foo')
            aus einem anderen Frame schreibt foo in mainFrame und so hab ich das auch mal gelernt (wenn auch lange her und verdunkelt ;-).

            Aber das:
            parent.mainFrame.history.back()
            wirkt sich auf alle history Objekte aus, auch auf das des Browserfensters.

            Frage 1: Warum?
            Frage 2: Wie gehts richtig bzw anders?

            Gruß
            Antipitch

            1. Hellihello Antipitch,

              alert (parent.frameName.id) checken, ob du wirklich den Frame richtig ansprichst?

              Das

              alert (parent.frameName.id)
              gibt nichts aus (window Objekt hat keine id Eigenschaft).

              Irgendwie logisch, wenn damit der Frame als Windowobjekt und nicht als Element des parent.document angehsehen wird.

              Ansonsten hab ich die Adressierung natürlich getestet.

              parent.mainFrame.document.write('foo')
              oder
              parent.frames[3].document.write('foo')
              aus einem anderen Frame schreibt foo in mainFrame und so hab ich das auch mal gelernt (wenn auch lange her und verdunkelt ;-).

              Das doch prima.

              Aber das:
              parent.mainFrame.history.back()
              wirkt sich auf alle history Objekte aus, auch auf das des Browserfensters.

              Frage 1: Warum?
              Frage 2: Wie gehts richtig bzw anders?

              Ohne das "history" wie beim Link beschrieben hast Du das auch probiert?

              Gruß,

              frankx

              1. Hi Frank,

                Ohne das "history" wie beim Link beschrieben hast Du das auch probiert?

                ja, aber eher aus schierer Verzweiflung, denn back() ist ja eben nicht für frames gedacht.

                Auch schon ohne href probiert (div onmouseover), kein Unterschied. Mein Gott ist das peinlich...

                Weitere Vorschläge?

                Gruß
                Antipitch

                1. Hellihello Antipitch,

                  also ich kriegs auch nicht hin. Es geht aber (http://de.selfhtml.org/javascript/beispiele/zweiframes.htm).

                  Dank und Gruß,

                  frankx

                  1. Hellihello Antipitch,

                    also irgendwie zählt er die die komplett_history auch bei frames[1] mit, unabhängig davon, welches frame bedient wird (alert(frames[1].history.length)). Man müsste sich wohl die letzte URL des zu kontrollierenden Frames merken, und diesen dann per href ansprechen.

                    Vielleicht klappts ja auch, wenn die Links nicht über html laufen sondern via javascript?

                    Gruß,

                    frankx

      2. Hallo,

        Ich möchte aus dem topFrame nur die Aktionen im mainFrame steuern.
        Die Änderungen im leftframe sollen nicht mitgezählt werden.

        Wenn eine Frameänderung nicht in der History erscheinen soll, kann man die Dokumente dort mit location.replace laden, anstatt mit mit location.href (javascript).

        Gruß, Don P