Referenz zu einem offenen Fenster herstellen
Maria
- javascript
Hallo Leute,
ich hab folgendes Problem. Ich befinde mich in einem geöffneten Fenster(Fenster 1) und aus diesem wird ein anderes Fenster(Fenster 2) geöffnet. Was ich nun genau machen muss ist, dass während Fenster 2 geladen wird eine Referenz zu Fenster 1 hergestellt wird. Und es muss genau beim laden von Fenster 2 passieren, es geht nicht dass ich Fenster 1 einfach übergebe. Den Aufruf von Fenster 2 kann ich nicht beeinflussen deswegen muss es beim laden von Fenster 2 passieren.
try
{
var oWin = window.open('',Fenster 2);
alert(oWin.document.all.txtManufacturerDesc.value);
}
catch(e)
{
alert(e);
}
Ich hab es so probiert, jedoch wird ein leeres Fenster geöffnet und die Referenz nicht hergestellt. Weiss jemand eine Lösung?
Vielen Dank im Vorraus
Maria
Hi,
ich hab folgendes Problem. Ich befinde mich in einem geöffneten Fenster
Spring niiicht!!!!1elf
(Fenster 1) und aus diesem wird ein anderes Fenster(Fenster 2) geöffnet. Was ich nun genau machen muss ist, dass während Fenster 2 geladen wird eine Referenz zu Fenster 1 hergestellt wird.
Ach so, da kommt noch mehr.
Wie "hergestellt" werden?
Suchst du vielleicht einfach nur window.opener?
Und es muss genau beim laden von Fenster 2 passieren, es geht nicht dass ich Fenster 1 einfach übergebe. Den Aufruf von Fenster 2 kann ich nicht beeinflussen deswegen muss es beim laden von Fenster 2 passieren.
Ist schon passiert - window.opener
var oWin = window.open('',Fenster 2);
Das sind definitiv keine gueltigen Parameterwerte.
MfG ChrisB
var oWin = window.open('',Fenster 2);
Mir wurde gesagt dass dieser Aufruf, ohne eine URL anzugeben, eben diese Seite in die Variable oWin lädt und mir dann alle Felder und deren Inhalt von Fenster 1 ohne Probleme in Fenster 2 zur verfügung stehen. Nur wie gesagt, das Fenster ist bereits offen deswegen kann/brauch ich es nicht noch einmal zu öffnen, zumal es dort Daten gibt die bei einem erneuten öffnen verloren gehen würden und ich dann diesen Aufwand eh nicht zu machen bräuchte.
Hi,
var oWin = window.open('',Fenster 2);
>
> Mir wurde gesagt dass dieser Aufruf, ohne eine URL anzugeben, eben diese Seite in die Variable oWin lädt
Von wem?
Wer hat dir zu der bloedsinnigen Angabe des zweiten Parameters geraten?
Und warum gehst du auf meinen Vorschlag bzw. die Frage, ob window.opener nicht eigentlich genau das ist, was du suchst, nicht ein?
MfG ChrisB
--
„This is the author's opinion, not necessarily that of Starbucks.“
Mein Abteilungsleiter hat mir dass vorgeschlagen^^
Sorry, hab ich wohl überlesen. Wenn es dass ist was ich suche wärs super, jedoch weiss einfach nicht wie ich es anstellen soll damit es so funktioniert wie ich es bräuchte.
Hi,
Sorry, hab ich wohl überlesen. Wenn es dass ist was ich suche wärs super, jedoch weiss einfach nicht wie ich es anstellen soll damit es so funktioniert wie ich es bräuchte.
Dann informiere dich ueber das Stichwort - bspw. in SELFHTML beim window-Objekt findest du auch opener beschrieben.
MfG ChrisB
jedoch weiss einfach nicht wie ich es anstellen soll damit es so funktioniert wie ich es bräuchte.
window.opener liefert dir das window-Objekt des ersten Fensters, das das zweite geöffnet hat.
Darüber hast du also Zugriff auf all dessen globalen Variablen und Objekte, also window.opener.document, window.opener.meineGlobaleVariable und dergleichen.
Was genau willst du denn im ersten Fenster ansprechen?
Mathias
Ich brauche im Prinzip nur den Inhalt eines Input-Feldes, anhand dessen ich ein anderes Feld in Fenster 2 vorbelegen kann. Ich hab auch schon etwas mit dem opener herumprobiert. Hab es mal so probiert:
var sManuDesc = window.opener.document.all.ManufacturerDesc.value;
Doch dann krieg ich immer die Fehlermeldung "value ist Null oder kein Objekt"
Das Feld "ManufacturerDesc" gibt es so in Fenster 1 und sollte demzufolge auch angesprochen werden können. Bin mit dem debugger durchgegangen und anscheinend ist der opener komplett leer.
var sManuDesc = window.opener.document.all.ManufacturerDesc.value;
Musst du für den IE 4 die skripte schreiben oder warum verwendest du immer noch document.all?
Doch dann krieg ich immer die Fehlermeldung "value ist Null oder kein Objekt"
Was sagt den Firefox? Dessen Fehlermeldungen sind Aussagekräftiger als die vom IE. Denn diese Meldung kann so nicht stimmen.
Struppi.
Hi Struppi,
den Firefox kann ich leider nicht verwenden, dass alles läuft ausschliesslich auf dem IE. Aktuell ist bei mir der IE7 installiert.
Ich habs so gelernt mit dem document.all^^ Habs es auch schon mit
window.opener.document.getElementById("ManufacturerDesc").value
versucht, doch dass funktioniert genauso wenig. Dann kommt die Meldung "Objekt erforderlich".
window.opener.document.getElementById("ManufacturerDesc").value
Die Backslashes sind hier falsch
versucht, doch dass funktioniert genauso wenig. Dann kommt die Meldung "Objekt erforderlich".
Dann versuch doch mal rauszufinden welches Objekt erforderlich ist. Du gehst von der Vermututng aus, dass es nur am opener liegt, als lass dir mal opener anzeigen, dann siehst du doch ob er existiert oder nicht.
Struppi.
Jetzt gehts endlich^^
var oWin = window.open("","test");
try
{
document.all.cboManufacturerDesc.value=oWin.document.all.txtVehicleManufacturerDesc.value;
}
catch (e){}
oWin.close();
Danke euch:-)
Jetzt gehts endlich^^
var oWin = window.open("","test");
try
{
document.all.cboManufacturerDesc.value=oWin.document.all.txtVehicleManufacturerDesc.value;
}
catch (e){}
oWin.close();
>
> Danke euch:-)
Das hatte leider aber nichts mehr mit dem zu tun was du uns erzählst. Du wolltest doch aus dem Popup auf das Elternelement zugreifen?
Ausserdem kannst du nicht auf ein Fensterinhalt zugreifen, der noch nicht fertig geladen wurde (ich nehme dass du mit window.open() eine Seite öffnest).
Da du aber try-catch verwendest siehst du natürlich keinen Fehler mehr. Funktionieren kann das aber auf keinen Fall.
Struppi.
Das hatte leider aber nichts mehr mit dem zu tun was du uns erzählst. Du wolltest doch aus dem Popup auf das Elternelement zugreifen?
Ausserdem kannst du nicht auf ein Fensterinhalt zugreifen, der noch nicht fertig geladen wurde (ich nehme dass du mit window.open() eine Seite öffnest).
Da du aber try-catch verwendest siehst du natürlich keinen Fehler mehr. Funktionieren kann das aber auf keinen Fall.Struppi.
Nicht direkt zugreifen, ich hab nur lediglich einen Wert aus dem Elternfenster gebraucht und auf diese Weise konnte ich den entsprechenden Wert auslesen. Hab es mehrfach mit verschiedenen Werten ausprobiert und jedesmal bekamm dass richtige raus.
Ich hatte im catch-block vorher einen alert mit der ich mir den Inhalt von e hab anzeigen lassen, aber da es funktioniert hab ich diesen wieder rausgenommen da es keine Meldung geben darf, auch bei einem Fehler. Dann soll einfach nichts passieren.
var oWin = window.open("","test");
try
{
document.all.cboManufacturerDesc.value=oWin.document.all.txtVehicleManufacturerDesc.value;
}
catch (e){}
oWin.close();
Nochmal: window.open ist unnötig, wenn es geht, verwende opener.
document.getElementById("element1-mit-id").value = opener.document.getElementById("element-mit-id").value;
Das müsste alles sein. So sollte es am besten gelöst sein.
Kein window.open, kein try-catch, kein document.all (wie gesagt).
Mathias
--
[JavaScript-Erweiterung für das SELFHTML-Forum](http://forum.de.selfhtml.org/js/doku/)
Hallo Maria!
doch dass funktioniert genauso wenig. Dann kommt die Meldung "Objekt erforderlich".
Dann machst Du irgendwas falsch (© by Struppi): Klick!
Viele Grüße aus Frankfurt/Main,
Patrick