Hola de nuevo,
probé anteponiendo 'window' tal y como sugerías, explorer, pero todo sigue igual. Pero primero paso a explicar qué es lo que hago a modo resumen.
Primero, desde el código PHP de la página principal, muestro una tabla, con datos de dispositivos, en el que una de las columnas es un enlace que abre un
popup donde cargo unos datos (direcciones MAC) del dispositivo correspondiente vía SNMP y los muestro en una tabla en un
popup para ser editados. Posteriormente el usuario confirma desde la
popup y -en teoría- toda la tabla editada pasa a la página principal y se cierra el
popup.
Un ejemplo de código que genera enlaces, en la tabla de la ventana principal, al
popup:
Using php Syntax Highlighting
$options = 'width=350,height=400,scrollbars=1';
$url = 'this.href';
//mostramos enlace a popup con ACL del dispositivo
$result = "<a href='" . $_SERVER['SELF_PHP'] . "?parametro=$parametro&ip=$ip&oid=$oid' onclick=\"window.open(" . $url . ", this.target, '" . $options . "'); return false;\">ACL</a>";
Coloreado en 0.027 segundos, usando
GeSHi 1.0.8.4
Bucle que muestra la tabla editable con MACs en el
popup:
Using php Syntax Highlighting
<div id='origen'>
<table>
foreach($acl as $i=>$mac){
echo <<<EOF
<tr>
<td><input type='text' name ='mac[]' id='$i' value='$mac' maxlength='17' size='17'></td>
<td><a href='#' onclick='eliminarFila(this)'><img border='0' src='../images/delete.gif' title='delete entry'></a></td>
</tr>
EOF;
}
</table>
</div>
Coloreado en 0.009 segundos, usando
GeSHi 1.0.8.4
También muestro botones en el
popup para agregar y eliminar entradas a la tabla de manera dinámica mediante JavaScript. Las filas agregadas dinámicamente tienen como valor inicial '00:00:00:00:00:00' y lógicamente el usuario ha de modificarlas.
Código JavaScript que agrega una fila dinámicamente en el
popup:
Using javascript Syntax Highlighting
var tabla=document.getElementById('tabla').getElementsByTagName('tbody')[0];
var row=document.createElement('tr');
var col=document.createElement('td');
col.innerHTML = "<input type='text' name='mac[]' id='"+numFilas+"' value='00:00:00:00:00:00' maxlength='17' size='17'>";
var aux=document.createElement('td');
aux.innerHTML = "<a href='#' onclick='eliminarFila(this)'><img border='0' src='../images/delete.gif' title='delete entry'></a>";
row.appendChild(col);
row.appendChild(aux);
tabla.appendChild(row);
Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
En la parte inferior de la página principal, mediante PHP, creo un
<div id='destino'>Select an ACL to edit first</div>, que será machacado con la tabla del
popup, una vez el usuario ha terminado de editarla.
El problema viene al pegar el innerHTML() del
<div id='origen'> (la tabla del
popup) sobre el
<div id='destino'> en la página principal no contempla los cambios realizados por el usuario, sino que los
textboxes contienen los valores por defecto que yo les dí inicialmente ('00:00:00:00:00:00').
Por último, el código que pega el contenido del
<div> en el
popup al otro en la página principal.
Using javascript Syntax Highlighting
if(window.opener && !window.opener.closed){
eliminarColumna('tabla');
soloLectura();
var dest=window.opener.document.getElementById('magico');
dest.innerHTML=window.document.getElementById('origen').innerHTML;
window.opener.document.getElementById('Commit').style.display='block';
habilitarCheckboxes();
window.close();
}
Coloreado en 0.000 segundos, usando
GeSHi 1.0.8.4
Explorer, lo que me comentaste de referirme a los
textboxes en lugar del código interno del
<div>, probaré a crear en lugar de un
div 'destino' otra tabla vacía (pues mi idea es no mostrar cajas de texto vacías en la página principal, sino que aparezca todo relleno y listo en cuanto se confirme desde la
popup) y con JavaScript desde el
popup ir rellenándola con los datos que introduzca/modifique el usuario en lugar de copiar el
div entero tal cual. A ver si así se reflejan los cambios realizados.
Es curioso que, en el momento de pegar un
div sobre otro, mediante sentencias estilo 'alert(caja.value);' me muestre el valor correcto en la
popup mientras que luego se pegue el '00:00:00:00:00:00' dichoso inicial en la principal.
Bueno, en cuanto pruebe eso,
posteo nuevamente.