No estoy seguro exactamente de lo que está experimentando, pero he almacenado datos en el abridor de la ventana emergente regularmente en IE (6,7 & 8) en aplicaciones de desarrollo y producción.
¿tiene una URL o algún otro código fuente que puede proporcionar?
en una nota relacionada ... no está tratando de determinar el tipo de un objeto en el abridor ... de la ventana emergente ¿verdad? - Hay algunos errores conocidos de IE en esta área.
Actualización:
Aquí hay un ejemplo rápido ...
<!--main window-->
<script>
function getThing(id){
url = 'http://mysite.com/...whatever...';
features = 'locationbar=X,menubar=Y...';
window['popup4'+id] = open(url, 'someNameWithoutSpaces', features);
}
function popupCallback(data){
alert('I got data back! ' + data);
document.getElementById('someID').innerHTML = '<b>' + data.label + ' (' + data.id + ')</b>';
//close the popup (now that we have/are done with the data)
window['popup4someID'].close();
}
</script>
<div id="someID">{Nothing Selected Yet}</div>
<input type="button" value="Pick One" onclick="getThing('someID');"/>
<!--popup window-->
<script>
function saveSelection(){
//acquire data however you want/need
var selData = {};
selData.id = 123456;
selData.label = 'iPod Touch (Jeff Atwood Edition)';
//call callback on opener
window.opener.popupCallback(selData);
}
</script>
Actualización 2
En la prueba se desprende que en IE7, IE8 (pero no IE6) después de que se cierra la ventana emergente, se pierde cualquier dato de referencia (las referencias no capturar una instantánea) por lo tanto, si necesita los datos después de cerrar la ventana emergente, tendrá que clonarla.
Pensé que si los datos se pueden envolver en una matriz, la clonación es pan comido. Simplemente llame a .slice() para copiarlo, pero ... ¡eso tampoco funciona!
Supongo que tendrá que guardar los valores que necesita (ya sea para formar elementos, o el DOM) ya que IE no parece que le permitirá usarlos después de que se cierre la ventana emergente. :-(
¿Cómo almacenaste datos en el abridor? Específicamente, ¿almacenaste datos complejos (objetos, matrices, fechas) a través de window.opener? –
He usado 2 cosas. 1 window.opener.foo = algún valor; mediante el cual esto almacena una variable global "foo" en la ventana de apertura. O abriré una ventana emergente y llamaré a una devolución de llamada ... diga window.opener.myCallback (someDataObj); donde mi función de devolución de llamada hace lo que quiera/necesite con los datos. – scunliffe
Interesante. Esos dos ejemplos son los que rompen en IE. Cuando el usuario cierra la ventana secundaria, la referencia del abridor a los datos simplemente se cierra. – JPot