Übergabewert in einem window open Fenster
kerstin
- javascript
hallo,
ich habe ein problem, zwei funktionierende scripte miteinander zu verbinden.
ich möchte, daß sich auf Buttonklick ein neues Fenster öffnet. kein problem,
mach ich so:
function oeffnen()
{
neuesfenster = open("seite2.htm","wasauchimmer","width=600,height=400,screenX=0,screenY=0");
}
In dem neuen Fenster soll ein Übergabewert von der vorherigen Seite erscheinen.
Das funktioniert auch, aber nur, wenn sich das Fenster normal öffnet. Der Code schaut dann so aus.
function site(uebergabe) {
location.href="form2.htm?" + escape(uebergabe);
}
<FORM>
<INPUT type="button" value="Formular" onClick="site('beliebiger satz')">
</FORM>
leider bring ich es nicht fertig beide scripts miteinander zu verbinden. Der Übernahmewert
wird einfach nicht mitgenommen, außerdem soll ja das alte Fenster im Hintergrund bleiben.
Da ich erst mit java script angefangen bin, scheine ich irgendetwas grundlegend falsch zu machen, da ich jetzt schon einiges probiert habe. Cookies möchte ich vermeiden.
Für einen Tip wäre ich sehr dankbar
kerstin
hi kerstin,
probier es doch mal hiermit!
in opener window ein object anlegen:
irgendetwas = new Object();
irgendetwas.wert = "speichere diesen string oder was auch immer im opener window";
im neuen window kannst du dieses object dann abfragen mit:
parent.opener.irgendetwas.wert;
bedingung hierbei ist, das das opener window geöffnet bleibt....
mfg
damian
okay danke,
werds mal auspobieren.
bis dann
kerstin
hallo nochmal,
die idee ist nicht schlecht, aber irgendwas haut immer noch nicht hin,
bitte schau dir das nochmal an
das opener fenster schaut also so aus:
<HTML>
<HEAD>
<TITLE>test</TITLE>
<SCRIPT language="JavaScript">
var text= new Array();
text[1] = "blabla";
function oeffnen(){
neuesfenster = open("form2.htm","test","width=600,height=400,screenX=0,screenY=0");
}
</SCRIPT>
</HEAD>
<BODY>
<form name="anfrage">
<input type="button" VALUE="wert" onClick="oeffnen()">
</form>
</BODY>
</HTML>
und das neue Fenster mit dem übergabewert:
<HTML>
<HEAD>
<TITLE>test2</TITLE>
<script language="JavaScript">
function holen() {
document.anfrage.objekt.value = parent.opener.text.[1];
</script>
</HEAD>
<BODY onLoad="holen()">
<form name="anfrage">
<INPUT name="objekt" size="50" maxlength="100">
</form>
</BODY>
</HTML>
danke schon im vorraus
kerstin
HI kerstin!
Folgende Änderung im Neuen Fenster:
alt:
function holen() {
document.anfrage.objekt.value = parent.opener.text.[1];
neu:
function holen() {
document.anfrage.objekt.value = parent.opener.text[1];
}
ansonsten ist alles richtig!
mfg
damian
hi damian,
hups, mein fehler.
danke für deine hilfe!
Hallo Kerstin!
Erstens vergiss mal den Vorschlag von Damian (der faellt unter die Kategorie "Warum einfach, wenn's auch umstaendlich geht?").
Zweitens: So weit biste doch gar nicht von der Loesung entfernt. Du musst Dir nur darueber klar werden, was die einzelnen Sachen bedeuten, die Du da tust.
function oeffnen()
{
»» neuesfenster = open("seite2.htm", "wasauchimmer", "width=600,height=400,screenX=0,screenY=0");
}
Hier machst Du also ein neues Fenster auf, und als *Inhalt* waehlst Du die Datei "seite2.htm". (Mehr ueber diese open-Funktion auf <../../tecb.htm#a35>.)
function site(uebergabe) {
location.href = "form2.htm?" + escape(uebergabe);
}
(Mehr zu location.href auf <../../tecbe.htm#a5> (location.href ist gleichbedeutend mit window.location.href))
Und hier aenderst Du den *Inhalt* des aktuellen Fensters, und diesmal waehlst Du nicht "seite2.htm", sondern
"form2.htm?" + escape(uebergabe). Du wirst also diesen Term oben in den open-Aufruf einbauen muessen. Dazu musst Du natuerlich auch die Variable 'uebergabe' dort zur Verfuegung haben. Diese muss also an oeffnen() genau so uebergeben werden, wie jetzt an site().
Reicht das als Gedankenanstoss? Wenn nicht musst Du halt nochmal fragen.
Bye, Calocybe
Hi Calocybe, Hi Kerstin!
Erstens vergiss mal den Vorschlag von Damian (der faellt unter die Kategorie "Warum einfach, wenn's auch umstaendlich geht?").
ansichtssache! solange man nur ein zwei variablen übergeben will, ist die übergabe etwas weniger tipaufwendig. durch das anlegen von objekten oder arrays habe ich jedoch jederzeit die möglichkeit von jedem fenster oder frame auf meine daten zuzugreifen, solange der datenframe oder das datenfenster unberührt bleiben und muß dabei nicht den inhalt meines arbeitsframes neu laden (location.href = 'irgendetwas.html'. zum strukturierten arbeiten bevorzuge ich deshalb die object/array-methode. die übergabevariante über die url halte ich nur für sinnvoll, wenn das vorhergehende frame oder fenster nicht mehr existieren soll oder darf, bzw. potentiell gefährdet ist geschlossen zu werden....
mfg
damian
Hallo Damian
durch das anlegen von objekten oder arrays habe ich jedoch jederzeit die möglichkeit von jedem fenster oder frame auf meine daten zuzugreifen, solange der datenframe oder das datenfenster unberührt bleiben
Mmh ja, das stimmt schon. Vor allem, wenn man viele Child windows hat, ist dieser Weg wohl irgendwann weniger arbeitsaufwendig. Ausserdem muss man nicht die URL dekodieren und pruefen, ob sie ueberhaupt in Ordnung ist usw. (wenn man es denn so genau (== sauber) machen will). Trotzdem fand ich diese Moeglichkeit etwas weit ueber das Ziel hinausgeschossen.
die übergabevariante über die url halte ich nur für sinnvoll, wenn das vorhergehende frame oder fenster nicht mehr existieren soll oder darf, bzw. potentiell gefährdet ist geschlossen zu werden....
Nun, das ist es *immer*. Hier sollte man vielleicht gleich nach dem Oeffnen die entsprechenden Werte in das Childfenster rueberkopieren. (Es sei denn, es soll eine Art kontinuierliche Kommunikation aufgebaut werden, i.e. das Parent window aendert die Daten staendig.
Bye, Calocybe