Ver Mensaje Individual
  #2 (permalink)  
Antiguo 23/11/2009, 20:05
Avatar de zerokilled
zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años, 10 meses
Puntos: 1485
Respuesta: Problemas con window.opener en IE

iexplorer es muy diferente en el aspecto del DOM. iexplorer no permite transferir elementos DOM de un documento a otro. por ejemplo, si intentas lo siguiente la consola te indicara Not such interface is supported.
Código:
document.body.appendChild(opener.document.body)
por supuesto, tu codigo no tiene nada parecido pero aunque no lo creas tiene el mismo contexto. especificamente en lo marcado en rojo.
Código:
window.opener.document.getElementById("ComCategoria").options[0] = new Option("someval","sometext"); 
Option se refiere a un metodo de la ventana hija, y al referirse a esta ventana el elemento es creado en el contexto de la ventana hija. para comprobar que es cierto, intenta el siguiente codigo el cual crea el elemento option en el contexto de la ventana padre.
Código:
option = self.opener.document.createElement('option');
option.text = 'sometext', option.value = 'someval';
window.opener.document.getElementById("ComCategoria").options[0] = option;
en este caso, notese que he usado createElement en lugar de Option. pudieramos haber creado el elemento con Option utilizando el contexto de la ventana padre pero por alguna razon que desconozco genera error Object doesn't support this property or method.
Código:
option = new self.opener.Option('text', 'value')
supuse que el problema esta en el keyword new ya que este crea un objeto antes de invocar el metodo o funcion. de modo que eliminando el keyword nos genera el elemento option. pero de nuevo nos crea el mismo error.
Código:
option = self.opener.Option('sometext', 'someval'); // notese que no tiene keyword new;
self.opener.document.getElementById("ComCategoria").options[0] = option;
conclusion:
la mejor solucion es crear una funcion en la ventana padre para crear y agregar los elementos options y desde la ventana hija invocas la funcion.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.

Última edición por zerokilled; 23/11/2009 a las 20:15