Foros del Web » Programando para Internet » Javascript »

Problemas con window.opener en IE

Estas en el tema de Problemas con window.opener en IE en el foro de Javascript en Foros del Web. Buenas tardes, Como puedo hacer para q el código de abajo funcione en IE, de momento solo funciona solo para firefox. Gracias. Código PHP: window ...
  #1 (permalink)  
Antiguo 23/11/2009, 10:27
hmv
 
Fecha de Ingreso: abril-2005
Mensajes: 323
Antigüedad: 19 años
Puntos: 0
Busqueda Problemas con window.opener en IE

Buenas tardes,
Como puedo hacer para q el código de abajo funcione en IE, de momento solo funciona solo para firefox. Gracias.

Código PHP:
window.opener.document.getElementById("ComCategoria").options[0] = new Option("someval","sometext"); 
  #2 (permalink)  
Antiguo 23/11/2009, 20:05
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
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
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:45.