history in Frames
Jo
- javascript
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
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
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
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
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
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
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
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
Hellihello Antipitch,
also ich kriegs auch nicht hin. Es geht aber (http://de.selfhtml.org/javascript/beispiele/zweiframes.htm).
Dank und Gruß,
frankx
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
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