Variable in einem anderen Fenster(PopUp) deklarieren

DrEvil

Erfahrenes Mitglied
Hallo liebe Gemeinde!

Also, ich möchte eine Variable an ein Fenster "ran backen", jetzt weiß ich aber nich wie man ein Fenster für diesen Zweck richtig anspricht...

Bei Frames funktioniert das ja nach dem Prinzip:
Code:
parent.Framename.Varname = Wert;

ich hab jetzt versucht das bei meinem PopUp so zu machen:
Code:
function KontaktAuf(personvar){
 Kontakt = window.open( "../../07_contact/feedback/formular.html" ,"Kontakt","Fensterangaben..");
 Kontakt.pvar = personvar;
 Kontakt.focus();
}

auslesen will ich dann mit

Code:
neueVar = Kontakt.pvar;

aber irgendwie klappt das nich wie es soll.

Hat jemand ne Idee?
 
Also bei mir funktioniert das damit.
Bekommst du eine Fehlermeldung?

auslesen will ich dann mit
Code:
neueVar = Kontakt.pvar;
....wo tust du das denn?
Wenn du es im Popup machst, reicht
Code:
neueVar = pvar
...."Kontakt" ist im Popup überhaupt nicht bekannt...
 
Ja das lese ich im PopUp aus, dann kann es ja nicht funktieren, wie du sagst.

Ich habe das mal mit
HTML:
neueVar = window.pvar
probiert. Geht aber auch nicht... :(

Wie kann ich denn in einem Fenster ne untergeordnete Variable auslesen?

MfG DrEvil
 
ok... richtig lesen muss man natürlich können, son mist... :-)

ja also ich hab das so probiert wie du es gesagt hast fatalus, trotzdem spuckt er immer noch die Fehlermeldung aus, pvar wäre nicht deklariert...

kein Plan.

DrEvil
 
ok, ich hab jetzt ausfindig gemacht, warum es nicht geht, wenn man die Variable bei body onLoad="..." auslesen will, klappt es nicht, aber ich habe keine Ahnung, wie ich das umgehen kann. Und es ist wichtig, dass die Funktion beim onLoad ausgeführt wird, weil dementsprechend aus einer selectBox ein Eintrag ausgewählt werden soll.

DrEvil
 
Packe das Skript im Quelltext irgendwo hinter das <select>....dann musst du onload nicht abwarten....es reicht ja, wenn die Liste vorhanden/ansprechbar ist.

Ich kann mir das mit dem onload allerdings garnicht vorstellen....muss ich erstmal ausprobieren.
 
Hi fatalus!
Ich habs probiert wie dus gesagt hast, geht nicht... ich glaube ich habe mittlerweile den Blick dafür verloren... kein Plan. Ich stell dir mal den Quellcode online + meine Versuchsseiten, mit den ich das getestet hab.

Also hier erstmal die Seite:

HTML:
<html>
<head>
<title></title>
<meta name="author" content="Eric Hartmann">
<meta name="generator" content="Ulli Meybohms HTML EDITOR">
<link rel="stylesheet" type="text/css" href="../../../../styles.css">
<script src="../../../scripts_en.js" type="text/javascript"></script>
<script src="../../../beside/navitop/script_crossover.js" type="text/javascript"></script>
<script>
write(){
document.write(pvar);
}
</script>
</head>
<body class="content">

<form action="senden.php" method="post">

<table style="width:500px; table-layout: fixed;" class="ref" cellspacing="0" align="center">

<!--Diese Zeile nicht verändern, sie fixiert die Spaltenbreiten-->
<tr class="ref_dark">
 <td style="width:100px; border: none;"></td>
 <td style="width:400px; border: none;"></td>
</tr>
<!-- Zeile-Ende -->

<tr class="ref_light">
 <td colspan="2" style="border: none;"><b>If you wish to contact us directly, just type your message here. For a more detailed contact form (e.g. you wish to have our brochure send to you) <a href="JavaScript:FensterAuf('../01_enquiry/enquiry.html',550,450)">click here</a>.</b></td>
</tr>
<tr class="ref_dark">
 <td colspan="2">&nbsp;</td>
</tr>


<tr class="ref_light">
 <td colspan="2" style="border: none;"><b>You wish to contact:</b></td>
</tr>
<tr class="ref_dark">
 <td colspan="2">

<select name="empfaenger" style="margin:10px;">
 <option value="a">Mrs. ? (Information Office)
 <option value="klinckmann">Mr. Klinckmann (Traffic Engineering)
 <option value="hammel">Mr. Hammel (Underground Engineering)
 <option value="schoentaube">Mr. Schöntaube (Constructive Engineering)
 <option value="schmidt">Mr. Schmidt (Building Management)
 <option value="b">Mr./Mrs. ? (Railway Engineering)
 <option value="c">Mr./Mrs. ? (Building Construction)
 <option value="herold">Mr. Herold (CEO)
 <option value="schuetz">Mr. Schütz (Webmaster)
 <option value="eric.hartmann">Eric Hartmann (Test)
</select>
<script>
function mailselect(){
document.forms[0].empfaenger.selectedIndex = pvar;
}
mailselect();
</script>
 </td>
</tr>


<tr class="ref_light">
 <td colspan="2" style="border: none;"><b>Your full name:</b></td>
</tr>
<tr class="ref_dark">
 <td colspan="2"> <input type="Text" name="name" value="" size="43" maxlength="43" style="margin:10px;"> </td>
</tr>


<tr class="ref_light">
 <td colspan="2" style="border: none;"><b>Your company's name:</b></td>
</tr>
<tr class="ref_dark">
 <td colspan="2"> <input type="Text" name="company" value="" size="43" maxlength="43" style="margin:10px;"> </td>
</tr>


<tr class="ref_light">
 <td colspan="2" style="border: none;"><b>Your email address:</b></td>
</tr>
<tr class="ref_dark">
 <td colspan="2"> <input type="Text" name="email" value="" size="43" maxlength="43" style="margin:10px;"> </td>
</tr>


<tr class="ref_light">
 <td colspan="2" style="border: none;"><b>Subject:</b></td>
</tr>
<tr class="ref_dark">
 <td colspan="2"> <input type="Text" name="betreff" value="" size="43" maxlength="43" style="margin:10px;"> </td>
</tr>


<tr class="ref_light">
 <td colspan="2" style="border: none;"><b>Your message:</b></td>
</tr>
<tr class="ref_dark">
 <td colspan="2"> <textarea name="text" cols="40" rows="12" style="margin:10px;"></textarea> </td>
</tr>


<tr class="ref_light">
 <td colspan="2" style="border: none;">&nbsp;</td>
</tr>
<tr class="ref_dark">
 <td colspan="2"> <div align="center"><input type="Submit" name="" value="Send" style="margin:10px;"><input type="reset" style="margin:10px;"></div> </td>
</tr>

</table>

</form>

<br>
<br>
<br>
<a href="Javascript:write()">WRITE VAR</a>
</body>
</html>

Das ist das PopUp, in dem pvar ausgelesen werden soll.
Die Variable wurde zuvor durch ein externes Script auf der Vorgängerseite wie folgt gesetzt:

HTML:
<html>
<head>
<title>abg</title>
<meta name="author" content="Penguin">
<meta name="generator" content="Ulli Meybohms HTML EDITOR">
<script>
function KontaktAuf(personvar){
 Kontakt = window.open( "popup_test_pu.html" ,"Kontakt","width=540, height=400, left=60, top=60, scrollbars=yes, status=yes");
 Kontakt.pvar = personvar;
 Kontakt.focus();
}
</script>

</head>
<body text="#000000" bgcolor="#FFFFFF" link="#FF0000" alink="#FF0000" vlink="#FF0000" >
<a href="Javascript:KontaktAuf(3)">OPEN POPUP</a><br>

</body>
</html>

wie gesagt, KontaktAuf ist in einer seperaten JS-Datei gespeichert.

und das ist das dazugehörige PopUp:

HTML:
<html>
<head>
<title></title>
<meta name="author" content="Penguin">
<meta name="generator" content="Ulli Meybohms HTML EDITOR">
<script>
function writevar(){
document.write(pvar);
}

</script>

</head>
<body text="#000000" bgcolor="#FFFFFF" link="#FF0000" alink="#FF0000" vlink="#FF0000">

<a href="Javascript:writevar()">WRITE VAR</a>


</body>
</html>

So siehts bis jetzt aus.

Ich kann einen Fehler beim besten Willen nicht finden. Achja, führe ich in meiner "echten" Seite die Funktion write() aus um mir pvar anzeigen zu lassen, meint er "Objekt erwartet", aber ich hab keine Ahnung was er nun daran zu muckieren hat...

MfG und vielen Dank für die Mühe

DrEvil
 
Mmmmh...das scheint ein Zeitproblem zu sein....

irgendwie kommt die Variable im Popup erst später an....sogar erst nach dem onload.

Soherum klappt es bei mir:
Code:
function mailselect(){
setTimeout("document.forms[0].empfaenger.selectedIndex = pvar",1000);
}
window.onload=mailselect;

...so richtig elegant ist das aber nicht.

Probiere mal, "pvar" als URL-Anhängsel dem Popup zu übergeben, das erscheint mir das sicherste.
Wenn du statt einem Link ein Formularfeld verwendest, ginge das sogar ohne Javascript....
und da PHP ja anscheinend verfügbar ist, kannst du das damit auch auslesen.

Threads dazu, wie du ein Popup öffnen, und ein Formular dorthin senden kannst, solltest du hier einige finden:)
 
Es geht! wuhuhuuuuu!
Vielen Dank! Ich schau mich dann mal in den Threads um.

MfG DrEvil

//edit:
Das Interessante ist, das schon eine Verzögerung von 1 im timeout ausreicht, quasi 1/1000sec (glaube ich), lustig, theoretisch müsste es doch noch ne "richtige" Lösung für das Problem geben oder?
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück