Comunicación entre ventanas

  • Por
Podemos pasar datos de unas ventanas a otras, llamar a funciones y realizar comunicaciones en general para interactuar con las ventanas. Aprendemos también a asignar nombres a ventanas secundarias.
La gracia del trabajo con ventanas secundarias consiste en que tanto la ventana principal como el popup se puedan comunicar entre si y mandarse órdenes y comandos desde una a la otra.

La comunicación podrá ser en dos sentidos:

  1. Desde la ventana principal a la secundaria.
  2. Desde la ventana secundaria a la principal.
Si queremos comunicar desde la ventana principal hacia la secundaria necesitamos disponer de una referencia de dicha ventana secundaria o popup. La referencia la será el nombre que le pongamos a la ventana secundaria. A continuación en este artículo veremos cómo asignar un nombre a un popup.

Si la comunicación es desde la ventana secundaria a la principal debemos utilizar el atributo opener de dicha ventana secundaria, que referencia a la ventana principal. Tanbién veremos más adelante este tipo de comunicación.

Nombre de la ventana con Javascript

Cuando abrimos una ventana utilizando el método open del objeto window asignamos un nombre a la ventana para referirnos a ella utilizando HTML. Pero si queremos referirnos a ella utilizando Javascript necesitaremos utilizar otro nombre.

La referencia Javascript a la ventana que se acaba de abrir se obtiene gracias al valor de retorno del método open. Para guardar la referencia asignamos el valor de retorno del método a una variable. A partir de ese momento la variable será un sinónimo del objeto window, es decir, será como si fuera el objeto window del popup y por lo tanto podremos acceder a los métodos y propiedades de la ventana secundaria a partir de esa variable.

referenciaVentana = window.open(“mi_url.html”,”nombre”,”width=100,height=300”)

Luego podremos acceder a los métodos y propiedades de esta manera.

referenciaVentana.close()

referenciaVentana.document.bgColor = “red”

Autor

Miguel Angel Alvarez

Miguel es fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Comenzó en el mundo del desarrollo web en el año 1997, transformando su hobby en su trabajo.

Compartir

Comentarios

CoriSoledad

04/11/2006
Hola.Muy interesante el tema.Mi consulta es si se puede intercambiar información de ventanas usando VbScript.He estado buscando por itnernet, pero no he encontrado una similitud.Gracias de antemano por la respuesta.

viviana

02/5/2007
Tengo una duda, todo funciona bien como está en el artículo pero necesito pasar los datos a un campo que su nombre lo asigno con un array: campo1, campo2, campo3.....cuando paso el valor del popups al parent no se como llamar el campo...paso los datos del parent al popup ok, este lo recibe, pero no se como concatenarlo el window.opener.document.form1.identificador_dotacion['m'].value=
.asi no funciona......probe con +m+ y tampoco.ayuda por favor

Guillermo

16/7/2009
Utilizar el mismo popup para varios campos en la ventana padre
Hola! Tengo este problema.

Quiero utilizar una ventana principal para cargar varios campos de texto y abro un popup para seleccionar los datos a cargar. Queria saber como puedo hacer para utilizar la misma ventana popup para cada uno de los campos de texto que tengo.

Te paso como tengo el codigo.

Ventana principal:

<input type="text" name="nombre1" id="nombre1" ><A HREF="#" onClick="popup()" >agregar</A><br>
<input type="text" name="nombre2" id="nombre2" ><A HREF="#" onClick="popup()" >agregar</A><br>

Ahi abro la misma ventana popup pero no se como hacer para que diferencie entre un link y el otro asi me carga el dato en el campo que corresponde.

Esto esta en la ventana popup:
function enviar(texto){
opener.document.persona.nombre.value = texto;
}

Aca no se como decirle a esta funcion que en vez de poner opener.document.persona.nombre1.value, ponga opener....persona.nombre2

Gracias de antemano!

labrador007

16/3/2012
Ayuda con el codigo
Hola que tal quisiera que me puedan ayudar yo estoy haciendo mi web pero quisiera ganar algo en publicidad y vi una pagina que me llamo la atencion y es esta

http://www.i-neverlose.com/premium-account/8786-working-Alldebrid-premium-account-14-March-2012

MIre el punto es que cuando yo le doy en el boton SHOW se abre una ventana y debo darle clic en ella para que me muestre el enlace yo queria saber si usted me podria ayudar con ese codigo para poner yo mi publicidad

De antemano le quedo muy agradecido por el tiempo prestado

eck

08/8/2012
Hola tengo una pregunta..
Primero que todo muchas gracias por la información, me ha sido muy útil, el problema que tengo es que quiero hacer que se abra una nueva ventana y que esta lo haga solo si el servidor está encendido (el de la pagina a abrir) ya que no quiero que se abra una ventana en blanco.
Muchas gracias...