Come mantenere lo stato del "creator"?

Jaxolotl

Nuovo Utente
20 Dic 2006
1
0
0
www.jaxolotl-design.com
Salve a tutti.
Sebbene programmo da tempo in PHP questi sono i miei primi esperimenti in Javascript.

Il problema.
a traverso un link situato a lato di un input field di testo voglio aprire una finestra in popup con un elenco di valori con cui compilare il campo di testo.
Ogni elemento de l'elenco contiene un link con indicato il valore da inserire nel text field ed attraverso javascript questo valore viene stampato all'interno del corrispondente campo di testo.

Questa parte del problema l'ho risolta "un po grezzamente penso" ma funziona.

Il Problema è che non ho capito come mantenere lo stato del "creator" se navigo all'interno della finestra "child".
Qualsiasi operazione io faccia all'interno della "child" perdo inevitabilmente il "creator" e di conseguenza non posso più inviare il valore di cui ho bisogno.

L'esempio
Nell'esempio che segue penso sia un po più chiaro l'argomento.

A . il set si compone di due file 1.html (creator) e 2.php(child).
B . La pagina 1.html contiene 2 input di testo con i sui corrispondenti ID ed un link che richiama il javascript che apre 2.php in popup passando il valore di opener e l'ID del campo di testo da compilare.

1.html
HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Untitled Document</title>

<script language="JavaScript" type="text/JavaScript">
	<!--
	function open_tool(URL,field_identifier){
	win2=window.open(URL,"","scrollbars=yes,width=700,height=500");
	win2.creator=self;
	win2.field_identifier=field_identifier;
	}
	//-->
</script>
</head>
<body>
	
	<form  action="" method="POST">
	<input type="text" name="title" id="title" value=""><a href="javascript:open_tool('2.php','title');" >()</a><br>
	<input type="text" name="color" id="color" value=""><a href="javascript:open_tool('2.php','color');" >()</a>
</form>
</body>
</html>

C. La pagina 2.php contiene un set di valori da inviare diviso in tre blocchi
  • Green(default)
  • Blue
  • Red

Ogniuno dei quali contiene 3 valori, all'apertura della pagina vediamo solo i valori "green" se si clicca su, il valore viene inviato con successo alla pagina "cretor", ma se invece clicchiamo su "red" per vedere i suoi valori si perde traccia di "creator" e non posso più spedire il valore.

2.php
PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
		<title>Untitled Document</title>
		<script language="JavaScript" type="text/JavaScript">
			<!--
			function return_tool_selection(field_identifier_value){
				window.opener.document.getElementById(field_identifier).value=field_identifier_value;
			}
			//-->
		</script>
	</head>

	<body>
		<ul>
			<li><a href="<?php echo $_SERVER['PHP_SELF']."?listing=blue_line"; ?>">Blue Line</a></li>
			<li><a href="<?php echo $_SERVER['PHP_SELF']."?listing=red_line"; ?>">Red Line</a></li>
		</ul>
		<table cellpadding="2" cellspacing="0" border="0" width="300">
			<?php
			if($_REQUEST['listing'] == "blue_line"){
				?>
				<tr>
					<td colspan="2">
						Blue line
					</td>
				</tr>
				<tr>
					<td bgcolor="#006388">&nbsp</td>
					<td><a href="javascript:return_tool_selection('#006388');window.close();">#006388</a></td>
				</tr>
				<tr>
					<td bgcolor="#0094CC">&nbsp</td>
					<td><a href="javascript:return_tool_selection('#0094CC');window.close();">#0094CC</a></td>
				</tr>
				<tr>
					<td bgcolor="#0DBCFF">&nbsp</td>
					<td><a href="javascript:return_tool_selection('#0DBCFF');window.close();">#0DBCFF</a></td>
				</tr>
				<?php
			}
			elseif($_REQUEST['listing'] == "red_line"){
				?>
				<tr>
					<td colspan="2">
						Red Line
					</td>
				</tr>
				<tr>
					<td bgcolor="#7D0003">&nbsp</td>
					<td><a href="javascript:return_tool_selection('#7D0003');window.close();">#7D0003</a></td>
				</tr>
				<tr>
					<td bgcolor="#B00004">&nbsp</td>
					<td><a href="javascript:return_tool_selection('#B00004');window.close();">#B00004</a></td>
				</tr>
				<tr>
					<td bgcolor="#F00006">&nbsp</td>
					<td><a href="javascript:return_tool_selection('#F00006');window.close();">#F00006</a></td>
				</tr>
				<?php
			}
			else{
				echo "<tr>
				<td colspan=\"2\">
				Select a list
				</td>
				</tr>";
			}
			?>
		</table>
	<br><br><br><br>	
		
		<table cellpadding="2" cellspacing="0" border="0" width="300">
				<tr>
					<td colspan="2">
						Fixed Line
					</td>
				</tr>
				<tr>
					<td bgcolor="#0C5900">&nbsp</td>
					<td><a href="javascript:return_tool_selection('#0C5900');window.close();">#0C5900</a></td>
				</tr>
				<tr>
					<td bgcolor="#118800">&nbsp</td>
					<td><a href="javascript:return_tool_selection('#118800');window.close();">#118800</a></td>
				</tr>
				<tr>
					<td bgcolor="#17B900">&nbsp</td>
					<td><a href="javascript:return_tool_selection('#17B900');window.close();">#17B900</a></td>
				</tr>

		</table>
	</body>
</html>


Come faccio a mantenere lo stato del "creator"?
Sto inbocando una strada sbagliata?
qualche consiglio o link da dove poter ottenere informazioni per imparare a farlo nel modo corretto?

Vi ringrazio per il vostro tempo.
 

Discussioni simili