Fenster übergreifende navigation
Jan
- javascript
Hi ich hoffe ihr könnt mir helfen.
Ich vermute mal mein Problem lässt sich wenn überhaupt mit Javascript lösen.
Ich habe ein neues Fenster zum anzeigen einiger Daten öffnen lassen, dies mache ich über folgende Funktion:
function newwindow(url)
{
fenster = window.open(url,"Neues Fenster","width=900,height=650,resizable=no,toolbar=no,location=no");
fenster.focus();
}
Nun möchte ich wenn ich in diesen neuen Fenster ein formular versende die rückmeldung im ursprünglichen fenster ausgegeben wird. Ich weiß jedoch nicht wie ich dieses ansprechen kann. Via target habe ich es einfach nicht hinbekommen.
Danke schonmal im vorrasu.
Gruß
Jan
Via target habe ich es einfach nicht hinbekommen.
Danke schonmal im vorrasu.
Gruß
Jan
Wenn die Ausgabe mit Javascript erfolgen soll, sowas wie fenster.parent
über target sowas wie target="_parent". Ich habe das gerade nicht genau im Kopf, aber das sollte Dir schon helfen.
Mahlzeit Jan,
Nun möchte ich wenn ich in diesen neuen Fenster ein formular versende die rückmeldung im ursprünglichen fenster ausgegeben wird. Ich weiß jedoch nicht wie ich dieses ansprechen kann.
Dafür gibt's das Objekt http://de.selfhtml.org/javascript/objekte/window.htm#allgemeines@title=opener.
MfG,
EKKi
Mahlzeit Jan,
Nun möchte ich wenn ich in diesen neuen Fenster ein formular versende die rückmeldung im ursprünglichen fenster ausgegeben wird. Ich weiß jedoch nicht wie ich dieses ansprechen kann.
Dafür gibt's das Objekt http://de.selfhtml.org/javascript/objekte/window.htm#allgemeines@title=opener.
MfG,
EKKi
Danke EKKi für den tip, klappt beinahe perfekt, nur das er in dem zielfenster nun beim firefox3 im zielfenster einen neuen tab öffnet und beim firefox2 einen neuen tab im pop-window öffnet.
hab im script welches ich nutze um das pop-up zu erstellen die zeile:
fenster.opener.name = "mainpage"
eingefügt. und im pop-up als target mainpage angegeben.
hab ich was vergessen?
Mahlzeit Jan,
hab im script welches ich nutze um das pop-up zu erstellen die zeile:
fenster.opener.name = "mainpage"
eingefügt. und im pop-up als target mainpage angegeben.
Du hast nicht verstanden, wie die Objekthierarchie in Javascript aussieht.
Im "Hauptfenster" öffenst Du ein Fenster mit
var popup = window.open(...);
Damit hast Du eine globale Variable namens "popup", mit der Du auf das Popup zugreifen kannst. Innerhalb dieses Fensters existiert ein Objekt namens "opener", das auf das Fenster verweist, das das Popup geöffnet hat - in diesem Fall Dein "Hauptfenster". Du kannst also z.B. auf ein Formularelement, das sich im Hauptfenster befindet, innerhalb des Popups mit
opener.forms[0].elements['blafasel']
zugreifen.
hab ich was vergessen?
Ja: die Objekte richtig zu benutzen.
MfG,
EKKi
Mahlzeit Jan,
hab im script welches ich nutze um das pop-up zu erstellen die zeile:
fenster.opener.name = "mainpage"
eingefügt. und im pop-up als target mainpage angegeben.
Du hast nicht verstanden, wie die Objekthierarchie in Javascript aussieht.
Im "Hauptfenster" öffenst Du ein Fenster mit
var popup = window.open(...);
Damit hast Du eine globale Variable namens "popup", mit der Du auf das Popup zugreifen kannst. Innerhalb dieses Fensters existiert ein Objekt namens "opener", das auf das Fenster verweist, das das Popup geöffnet hat - in diesem Fall Dein "Hauptfenster". Du kannst also z.B. auf ein Formularelement, das sich im Hauptfenster befindet, innerhalb des Popups mit
opener.forms[0].elements['blafasel']
zugreifen.
Ich will nicht auf ein Obejkt im opener zugreifen, ich will meine Serverresponse an den opener leiten, im neuen fenster wird dein form versand und die rückmeldung von server soll an den opener laufen.
daher dachte ich muss ich im neuen fenster als target den opener angeben.
Klappt ja auch fast wie ich das will, aber nur fast.
hab ich was vergessen?
Ja: die Objekte richtig zu benutzen.
MfG,
EKKi
Mahlzeit Jan,
Ich will nicht auf ein Obejkt im opener zugreifen, ich will meine Serverresponse an den opener leiten,
Auf Deutsch heißt das wie?
im neuen fenster wird dein form versand und die rückmeldung von server soll an den opener laufen.
Das heißt, Du hast im Popup ein Formular, und das soll vom Browser an das "Hauptfenster" geschickt werden? Mir wäre kein Weg bekannt, wie das gehen soll - <http://de.selfhtml.org/html/formulare/definieren.htm#zielfenster@title=ein Ziel für ein Formular> zu definieren funktioniert ja normalerweise nur für Frame-Konstruktionen.
daher dachte ich muss ich im neuen fenster als target den opener angeben.
Damit vermischst Du Javascript und HTML. Das eine hat mit dem anderen prinzipiell erstmal nichts zu tun. Ein Formular, das mittels HTML abgeschickt wird, weiß von irgendwelchen Variablen und Objekten innerhalb von Javascript nichts. Abgesehen davon bezieht sich das "target"-Attribut ja eigentlich nur auf Frames. Wenn es mit Popups funktioniert, bestens. Wenn nicht, funktioniert es wie beschrieben. :-)
Klappt ja auch fast wie ich das will, aber nur fast.
Mir scheint, es KANN gar nicht klappen, was Du vorhast ...
MfG,
EKKi
Das frustierende ist das ich unzählige Forenbeiträge gefunden habe die dieses Problem anscheinend genau so gelöst haben.
Und irgendwie hat sich ja mein Target ja auch auf den opener verschoben, nur öffnet der Browser im opener window einen neuen Tab.
Kann das mit Broswereinstellungen zusammen hängen?
Mahlzeit Jan,
Und irgendwie hat sich ja mein Target ja auch auf den opener verschoben, nur öffnet der Browser im opener window einen neuen Tab.
Kann das mit Broswereinstellungen zusammen hängen?
Sicher. Vielleicht auch mit Sonnenflecken. Wie wäre es, wenn Du mal relevanten Quellcode zeigst? Oder sollen Deine - durchaus hilfsbereiten - Leser weiter im Nebel herumstochern und ihre Glaskugeln bemühen?
MfG,
EKKi
Mahlzeit Jan,
Und irgendwie hat sich ja mein Target ja auch auf den opener verschoben, nur öffnet der Browser im opener window einen neuen Tab.
Kann das mit Broswereinstellungen zusammen hängen?Sicher. Vielleicht auch mit Sonnenflecken.
die hatte ich nich bedacht ;)
Also hier nochmal wie ich das window erstelle:
<SCRIPT type="text/javascript">
function newwindow(url)
{
window.opener.name = "mainpage";
fenster = window.open(url,"Neues Fenster","width=800,height=400,resizable=no,toolbar=no,location=no");
fenster.focus();
}
</SCRIPT>
Und hier der form teil:
<form id="form1" name="form1" method="post" action="edit.php">
...
<input type="submit" name="send" id="send" value="Speichern" target="mainpage"/>
</form>
und danke EKKi das du dich so sehr bemühst
<form id="form1" name="form1" method="post" action="edit.php">
<input type="submit" name="send" id="send" value="Speichern" target="mainpage"/>
das target in im form tag, hab das gherade falsch abgeschrieben, sorry
Mahlzeit Jan,
Also hier nochmal wie ich das window erstelle:
<SCRIPT type="text/javascript">
function newwindow(url)
{
window.opener.name = "mainpage";
fenster = window.open(url,"Neues Fenster","width=800,height=400,resizable=no,toolbar=no,location=no");
fenster.focus();
}
</SCRIPT>
Ich vermute, das ist der Code im "Hauptfenster"?
Wenn ja: wer hat Deiner Meinung nach das Hauptfenster geöffnet? Ein anderes Fenster? Ist es also sinnvoll, den opener des Hauptfensters zu bestimmen und ihm einen Namen zu verpassen?
Und hier der form teil:
<form id="form1" name="form1" method="post" action="edit.php">
...
<input type="submit" name="send" id="send" value="Speichern" target="mainpage"/>
</form>
Ich vermute, das ist der Code im Popup?
Wieso fehlt hier jeglicher Zugriff auf opener? Wieso wird hier nicht der Name des Fensters, das dieses Popup geöffnet hat, festgelegt, damit das Formular dorthin abgeschickt werden kann?
MfG,
EKKi
Mahlzeit Jan,
Also hier nochmal wie ich das window erstelle:
<SCRIPT type="text/javascript">
function newwindow(url)
{
window.opener.name = "mainpage";
fenster = window.open(url,"Neues Fenster","width=800,height=400,resizable=no,toolbar=no,location=no");
fenster.focus();
}
</SCRIPT>Ich vermute, das ist der Code im "Hauptfenster"?
Wenn ja: wer hat Deiner Meinung nach das Hauptfenster geöffnet? Ein anderes Fenster? Ist es also sinnvoll, den opener des Hauptfensters zu bestimmen und ihm einen Namen zu verpassen?
Und hier der form teil:
<form id="form1" name="form1" method="post" action="edit.php">
...
<input type="submit" name="send" id="send" value="Speichern" target="mainpage"/>
</form>Ich vermute, das ist der Code im Popup?
Wieso fehlt hier jeglicher Zugriff auf opener? Wieso wird hier nicht der Name des Fensters, das dieses Popup geöffnet hat, festgelegt, damit das Formular dorthin abgeschickt werden kann?
MfG,
EKKi
So endlich geschafft, danke für den hinweis.
hab nun im pop-up folgenden Code in den Head geschrieben:
<SCRIPT type="text/javascript">
window.opener.name = "mainpage";
</SCRIPT>
und die Zeile dafür aus der newwindow funktion rausgenommen. nun funktioniert es einwandfrei. is irgendwie auch logisch, wie du meintest wieso bestimmt ich den namen des opener des ursprungsfensters.
Danke für deine Mühe.
Mahlzeit Jan,
hab nun im pop-up folgenden Code in den Head geschrieben:
<SCRIPT type="text/javascript">
window.opener.name = "mainpage";
</SCRIPT>
und die Zeile dafür aus der newwindow funktion rausgenommen. nun funktioniert es einwandfrei.
Wunderbar.
is irgendwie auch logisch, wie du meintest wieso bestimmt ich den namen des opener des ursprungsfensters.
Danke für deine Mühe.
Kein Problem - und Du bist fast SELF darauf gekommen ... ;-)
MfG,
EKKi