2010-11-12 12 views
7

Tengo una aplicación web que se inicia como una segunda aplicación web en una nueva ventana/pestaña del navegador. Quiero actualizar el contenido en la página original cuando el usuario envía su entrada en la segunda página.¿Cómo se comunica entre 2 pestañas/ventanas del navegador?

Ejemplo de mundo real: Google utiliza este comportamiento en GMail. Al redactar un nuevo mensaje, si hace clic en el enlace "A", aparecerá una lista de sus contactos en una nueva ventana del navegador. Esto deja la ventana de redacción original de redacción abierta y activa para la entrada, mientras que el usuario puede en cualquier momento seleccionar los destinatarios de correo electrónico de la lista de contactos. Cuando envían esa ventana, las direcciones de correo electrónico seleccionadas se agregan a la lista de destinatarios en la ventana de redacción original.

¿Cómo se logra esto? Imagino que podría hacerse usando AJAX, pero idealmente la solución evitará la lógica de ida y vuelta necesaria para enrutarla a través del servidor.

Como referencia, mi paquete de tecnología para esto es una aplicación ASP.NET MVC que lanza una segunda aplicación ASP.NET MVC que contiene una aplicación Silverlight. Ambas aplicaciones pueden/hacen uso de jQuery.

Gracias por su ayuda.

Respuesta

9

No creo que se refiera a dos pestañas. Lo que Gmail está haciendo es comunicarse entre un mensaje emergente y el padre.

Digamos que ha abierto una nueva ventana usando javascript. En la ventana abierta, puede hacer:

opener.someFunction() para pasar datos de vuelta. Déjame encontrar un ejemplo sólido y pegarlo.

Edit: Aquí está un buen modelo. http://www.javascriptkit.com/javatutors/remote2.shtml

Puede usar el abridor para hacer mucho.

+0

Esto se parece a lo que yo quiero usar. Probé las pruebas simples en tu enlace. Funciona perfecto para Firefox e IE pero falla en Chrome. El color de la ventana principal nunca se actualiza. ¿Alguna idea de por qué? – Justin

+0

@Amir: es posible que desee pegar el ejemplo aquí, tal vez en un fragmento de código, en caso de que el sitio web JavaScriptKit se caiga. –

+0

¿Esta solución podría aprovechar la misma sesión en un sitio web autenticado? –

Cuestiones relacionadas