window.opener – JavaScript para Mozilla
Es probable que si programás sitios webs, hayas visto la necesidad de programar una ventana pop up que interactúe con la ventana padre.
Para lograr esto en IE no es nada de otro mundo, ya que el ámbito de los objetos puede ser salteado. Pero para hacer lo mismo en Mozilla u Opera, esto tiene que ser algo mucho más preciso
Ejemplo:
Tenemos una ventana padre con un formulario con nombre "formulario"; dentro un campo de texto con nombre "resultado". y un link que abre una ventana pop up.
Y en el pop up: Un formulario llamado "formu", un campo de texto llamado "datos" y un link que pasa los datos del pop up a la ventana padre.
Entonces, para hacer referencia al valor de “resultado” desde la ventana hija tenemos 4 instancias: window.opener (ventana padre), .document (documento html), .formulario (form), .resultado (input text) las cuales hay que respetar a rajatabla para que funcione en otro navegador que no sea IE.
QuedarÃa asi:
window.opener.document.formulario.resultado.value
Lo que faltarÃa ahora asignarle el valor del texto “dato” desde la ventana hija asi:
window.opener.document.formulario.resultado.value = window.document.formu.datos.value;
Ver el ejemplo funcionando (habiliten popups en sus navegadores para este ejemplo)
Acá les dejo el código, Vale aclarar que los campos de texto son sólo para el ejemplo, esto puede hacerse con cualquier objeto.
Ventana padre:
Ventana popup:
Si querés agregar algo te será agradecido, si querés más información acerca de como funciona Mozilla con JS esta página te puede servir.










59 Comentarios
Patricio
abril 6th, 2005 at 1:42 pm
Muy bueno che …. saludos.
Funk
abril 6th, 2005 at 2:53 pm
Excelente post!!!. Muy interesante.
Saludos
Federico
abril 7th, 2005 at 12:35 am
Mis conocimientos de JS apestan asà que pregunto: ¿O sea que hay que declarar la “ruta completa” a un objeto?
aro
abril 7th, 2005 at 1:20 am
adiero che, est muy bueno
Lucas
abril 7th, 2005 at 10:23 am
Gracias a todos.
Fede: Si, tenés que explicitar cada objeto instanciado dentro de la ventana, la diferencia con IE es que sino indicas todos, no te lo reconoce.
Federico
abril 10th, 2005 at 8:59 pm
Que curioso IE haciendonos la vida más fácil. SerÃa interesante si, con ese criterio, es posible connfundirlo con respecto a qué objeto en particular te referÃs.
Lucas
abril 11th, 2005 at 5:13 pm
Si, la vida más facil pero más ineficiente, más insegura y todos los mases que quieras ponerle.
Merovingio
abril 13th, 2005 at 7:38 am
Pronto voy a probar estos truquitos!. Excelente post!.-
jose
abril 15th, 2005 at 8:13 pm
y como hago para pasarle varios valores a un <select>?
Lucas
abril 16th, 2005 at 1:03 am
Jose, tendrÃas que hacer un bucle for o while con un
document.writelnentonces si te referis al documento que esta en la ventana padre tendrÃas que usar:window.opener.document.writeln("cadena");dentro de un bucle para que se repita todas las veces que quieras.
Edgard
abril 28th, 2005 at 3:58 pm
Hola, esta magnifico. Dime como seria en IE
Lucas
abril 28th, 2005 at 4:12 pm
Edgar, es exactamente igual, ese ejemplo sirve para los dos.
Andrés
mayo 13th, 2005 at 2:26 am
que tal, soy un tipo novel en esto del JavaScript, y quiero saber si es posible, después de abrir un ventana nueva por medio de window.open(), cerrar la anterior, es decir la que tiene el código y dejar abierta solamente la ventana nueva.
saludos
Lucas
mayo 13th, 2005 at 1:04 pm
Andrés, se puede hacer con:
window.opener.close()desde la ventana hija.Yuanga
junio 3rd, 2005 at 7:36 am
Muchas gracias, ¡me ha ido de maravilla!
NoCode Weblog
junio 4th, 2005 at 4:31 pm
ArtÃÂculos para el fin de semana 10
Algunos artÃÂculos para leer durante el fin de semana:
Developing sites for users with Cognitive disabilities and learning difficulties
A totally non-techie explanation of what you need to know about rss
Consejos para escribir un blog
Encuesta p…
Rodrigo
junio 7th, 2005 at 7:58 pm
Hola, me gustarÃa saber como puedo obtener el valor de un input de la ventana nueva, pero leyendola desde la que la abrió, ya que no tengo el dominio de la ventana nueva.
Gracias.
Yerba
junio 15th, 2005 at 7:21 pm
Muy buena, funciona bien.
Juan
septiembre 21st, 2005 at 4:15 pm
Bueno yo tengo la siguiente pregunta…
Es posible ejecutar desde la ventana hija un codigo contenido en la ventana padre?
EL problema es que estoy haciendo una pagina en el cual la pagina padre se llama index. Dentro de este index coloque un iframe y dentro de este iframe tengo una pagina html llamada menu, este menu tiene 4 opciones y se supone que al elegir alguna de las cuatro debo mostrar en la pagina padre (index) otro menu hecho en javascript…si alguien sabe como hacerlo le agradezco de antemano
pablo
septiembre 28th, 2005 at 12:06 pm
Muy bueno.
saul
octubre 13th, 2005 at 9:24 pm
sabes gracias amigo tu codigo me sirvio bastante pude arreglar por fin mi problema con el php y el window opener nos vemos bueno yo programo php con postgresql estoy q hago mi tesina y gracias nos vemos
< html xmlns="http://www.w3.org/1999/xhtml">
< head >
< meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
< title>Ejemplo de Popup< /title >
< script >
function pasarvalor(valor){
window.opener.document.formulario.resultado.value = valor;
}
< /script >
< /head >
< body >
< ? php
$a='0010';
$b='0012';
/*echo"
javier
enero 7th, 2006 at 6:23 pm
Alguien sabe como hacer
esto que anda en IE para refrescar la ventana padre
window.opener.formulario.submit();
pero en firefox
Agradezco cualquier ayuda
mar
enero 11th, 2006 at 4:09 pm
Excelente post, me vino al pelo recien! (un tiempo despues de posteado, claro)
G@rGam€l_GO
junio 29th, 2006 at 1:58 pm
Excelente, cae como anillo al dedo…., una explicación sencilla y práctica… vaya que me habia complicado un poco cuando intente hacer algo parecido :-< tratar de enviar desde el hijo, un hidden por POST a un campo del padre! ;-)
Sarah
julio 25th, 2006 at 6:48 pm
Hola
Tengo un problemita: tengo una pagina padre y abro una pagina hija y en la hija tengo un select dinamico y debe consultar a la Base de datos por lo que recargo la pahina hija segun lo selecionado, pero en ella misma hago una operacion y el valor lo debo enviar a la pagina padre(la inicial que abrio a la hija) uso: window.opener.document.form1.formula.value=document.form1.formula.value;
pero no me envia el valor lo que hace es irse a la promer pagina hija que se abrio.
¿COMO PUEDO ENVIARLA A LA PAGINA PADRE?
Se me ocurrio obtener el nombre de la pagina padre; ¿como puedo saber el nombre de la pagina padre?
Sarah
julio 26th, 2006 at 4:17 pm
hola. tengo un pregunta que no tiene que ver son javascript para quiezas alguien me pueda ayudar: como puedo seleccionar el ultimo registro de una tabla con sentencias SQL que postgres pueda interpretar, ya probe: SELECT LAST (maximo) FROM tarifa_ir; pero el interprete de postgres no reconoce la palabras LAST, alguien saba como hacerlo……..
carlos
julio 29th, 2006 at 4:47 am
eta buenisima,usto lo que buscaba para un trabajo que estoy realizando
Estuardo
agosto 3rd, 2006 at 9:04 pm
hola me gustaria saber como paso un link a la pagina padre desde el popup tediendo en cuenta que el popup es (showModalDialog)…gracias de antemano
Monica
agosto 27th, 2006 at 5:29 pm
Hola, alguien podria ayudarme, necesito mostrar un listado con checkbox de lo que se seleccione de un selec, gracias
Mario Zaizar
agosto 29th, 2006 at 1:42 pm
Hola, una duda necesito tener una popup que al cargarse cierre a otras popups abiertas. Es decir que no se pueda tener mas de una popup en determinado momento. Alguna idea?
Cristy
septiembre 14th, 2006 at 6:05 pm
Oye.. se q manera se puede utilizar un showModalDialog y en la pagina hija agarrar los datos.. con un windows.opener.document.form.object.value?
gracias
Gaston
septiembre 28th, 2006 at 11:26 am
como ago para pasar los datos de una array que esta en el formulario padre, al formulario hijo; mostrando dicho dato,solo al a ser clic en un boton..¿es casi similar al ejemplo…visto?…gracias
miguel marin
octubre 6th, 2006 at 4:47 pm
hola esta bueno pero como realizo una funcion general donde solo le pase el objeto donde quiero que regrese el valor
Jesús
octubre 12th, 2006 at 2:49 pm
Me gusta mucho este script en lo cual me ha solucionado mucho….
Pero me gustaria para un Select que esta PHP, como hago para actualizarlo en la página padre… Muchas Gracias.
Salva
octubre 21st, 2006 at 4:24 am
Hola amigos. Cree una funcion para IE i no me funciona en mozilla. la funcion tendria que ir a una URL especificado en el value de un selec al canviar de valor, es decir, que al seleccionar una opcion ir directamente a la URL (onChange()). la funcion en IE funciona… alguien sabe xq en mozilla no?? aki os la dejo amigos!
function goto(form) {
var myindex=selec.tipus.selectedIndex
if (selec.tipus.options[myindex].value != “0″) {
location=selec.tipus.options[myindex].value;}
}
Gracias!
emilio
noviembre 2nd, 2006 at 6:00 pm
no se como hacer para que con scon la propiedad nested image de struts, me funcione un explorador de window al hacer click en la imagen. si algunos saben dede ya gracias.
chuybar
diciembre 8th, 2006 at 11:36 am
Que tal!
Tengo el siguiente caso (creo interesante tal vez sea un excepcion)
Quiero hacer eso mismo del window.opener para obtener los datos de la pagina padre.
El detalle es que primero tengo una pagina htm con 2 frames.
En el primer frame abro la pagina padre y la pagina padre abre la pagina hija en el segundo frame.
Cuando la pagina hija quiere hacer referencia a un objeto de la pagina padre no funciona, marca que window.opener.document no es un objeto.
Cuando lo corro sin el htm si funciona.
¿Habra que indicarle otra ruta?
Espero que me haya explicado.
Gracias.
Marcelo
enero 3rd, 2007 at 9:00 am
Sarah, queria preguntarte si solucionaste tu problema con el popup, ya que yo estoy teniendo el mismo problema (sepierde la referencia al padre), y no logro hacerlo funcionar en firefox, el tema de guardar en algun lado el nombre del padre es imposible, ya que es una referencia a memoria y se pierde al retornar de la busqueda en el popup, si lo solucionaste te pido por favor que me cuates de que manera lo hiciste ya que no se me ocurre nada, desde ya muchas gracias.
Jason
enero 12th, 2007 at 6:13 pm
Gente tengo un problema con esto de ventanas pop up, estoy haciendo una pagina en la cual se realimenta por ventanas pop, el problema me surge cuando la ventana hija me regresa con los datos, ya que limpia el resto de texbox en la ventana padre, ahh esta programada en asp.net
Raul
enero 13th, 2007 at 3:43 pm
Hola he probado tu script y en firefox 2.0 no me funciona alguien sabe por que?
cristhian
enero 23rd, 2007 at 11:52 am
exelente explicacion estaba justo atariado con algo asi
Raul si funciona en Firefox 2.0
Antonino
enero 25th, 2007 at 3:28 pm
Muy bueno! Yo lo tenia para hacerlo en IE, es bueno tenerlo ahora para mozilla, haciendo mi sitio más compatible!
Saludos y gracias!
Raul
enero 26th, 2007 at 8:00 pm
Hola como les digo el ejemplo que esta en esta pagina no me funciona en firefox 2.0 me sale objeto padre no tiene propiedades algo asi :(
Gastón
febrero 22nd, 2007 at 11:17 am
Excelente!!! lo estaba buscando hace ya un tiempo!!!
Raul
marzo 8th, 2007 at 11:46 am
Para que me funcione en firefox 2.02 solo puse document.opener sin el document.nombre_de_formulario y funciono
Walter
marzo 23rd, 2007 at 10:43 am
Una pregunta…si la ventana padre del popups tiene frames…como accedo a los elementos de cada frame?
Walter
marzo 23rd, 2007 at 10:44 am
Una pregunta…si la ventana padre del popups tiene frames…como accedo a los elementos de cada frame desde la ventana hija?
Juan Fuentes
abril 10th, 2007 at 4:46 pm
Gracias, por tu gran aporte, es una excelente ayuda
joarpoga
abril 27th, 2007 at 1:00 pm
si deseo validar los cambios presentes en el campo del padre este no me genera cambio cuando se realiza con el popup, como si no se hiciese cambio, agradezco la colaoracion
Laura
mayo 9th, 2007 at 5:02 am
Hola acabo de leer el siguiente mensaje
Jason dijo:
Gente tengo un problema con esto de ventanas pop up, estoy haciendo una pagina en la cual se realimenta por ventanas pop, el problema me surge cuando la ventana hija me regresa con los datos, ya que limpia el resto de texbox en la ventana padre, ahh esta programada en asp.net
Me pasa exactamente lo mismo, yo programo con jsp ¿Encontraste la solución? Ya no sé que hacer para que funcione, el caso es que en IE todo va perfecto el problema viene al utilizar Mozilla
Lucas
mayo 9th, 2007 at 11:29 am
Laura, Jason:
¿Qué es lo que necesitan hacer?, porque si la ventana hija devuelve el resultado hacia un campo en particular, lo va a sobreescribir. Si lo que quieren es sumar el contenido de la hija al campo y no sobreescribirlo, en vez de asignarlo lo concatenan. Sino pueden usar campos hidden o variables para almacenar ese dato.
PD. El lenguaje servidor que usen carece de importancia, esto se interpreta y ejecuta en el lado del cliente.
Saludos
Enrique
mayo 18th, 2007 at 11:32 am
hola… yo lo quise probar con una pagina aspx y cuando le doy para que vaya a la pagina padre, se cierra la hija pero no carga la informacion en la pagina padre que puede ser?
Rossy
julio 30th, 2007 at 3:41 pm
Hola:
Muy buen post, pero me gustarÃa saber como puedo pasar 3 valores desde el popup hasta la ventana padre, y no solo 1 como lo hiciste en tu ejemplo?
Gracias y Saludos.
Lucas
julio 30th, 2007 at 9:19 pm
Rosy, es practimante lo mismo, sólo tenes que agregar dos campos y repetir en el link que tambien pase el valor de ese campo nuevo que agregaste. Saludos
Arturo
agosto 10th, 2007 at 6:02 pm
ME sirve ese script solo que alguione me podria decir como le hago para que envie muchos valores(tengo varios checkboxs) concatenados y no me los REMPLACE. Como se Concatena????
Arturo
agosto 10th, 2007 at 6:04 pm
Perdon creo escribi mal, necesito concatenar muchos valores, como modifico el script para que no me sustituya lo escrito anteriormente. osea que me lo vaya concatenando, gracias por su ayuda!!!
Petronio
septiembre 6th, 2007 at 2:16 pm
Hola, tal vez me podáis ayudar.
Tengo un programa escrito en php con un evento onchange, que funciona perfecto en los navegadores de windows, pero en fedora 5 no funciona (ni en Firefox Mozilla ni en Konqueror). ¿Me está faltando habilitar algo quizás? ¿O me conviene instalar otro navegador?
Ya probé poniendo document.opener (como sugiere Raúl), pero no pasa naranja.
Mil gracias a quien me responda!
diegpric
septiembre 21st, 2007 at 2:18 am
Interesante el codigo , pero si lo que quiero es pasar no solo una variable si no 2 como seria el codigo???
Nandhi
diciembre 8th, 2011 at 12:45 pm
Hola muy util gracias. Pero si se requiere realizar en caso contrario ?? por ejemplo si quiero asignar a una variable hija un valor desde la variable padre, como se podria realizar ??