ventana transparente pestaña open nueva flotante emergente ejemplo centrada abrir javascript windows cross-browser communication

transparente - window.open javascript ejemplo



Comunicación entre ventanas/pestañas con JavaScript (5)

Esta pregunta ya tiene una respuesta aquí:

¿Cómo puedo tener dos pestañas (o ventanas) que están en el mismo dominio para poder hablar entre sí sin tener que tener una instancia de ventana el otro?

Editar: ¿Por qué se marcó como duplicado cuando esto se hizo antes de la otra pregunta?


La única forma en que puedo pensar sería usar XHR. Cada ventana / pestaña se comunica con el servidor, que a su vez se comunica con otras ventanas, más o menos de la misma manera que funciona el chat de gmail. Excepto que tendría 2 ventanas en el mismo cliente, en lugar de 1 ventana en 2 clientes.


Encontré una manera, puedo hacer dos películas flash en cada página con LocalConnection para invocar JavaScript en la otra página usando una interfaz externa.

Pon esto en un swf AS3, este es el receptor:

import flash.external.ExternalInterface; import flash.net.LocalConnection; var mLocalConnection:LocalConnection; mLocalConnection = new LocalConnection(); mLocalConnection.connect("xivioview"); mLocalConnection.client=this; function recieveText(textRecieved):void { ExternalInterface.call(textRecieved); };

Y el remitente swf:

import flash.external.ExternalInterface; import flash.net.LocalConnection; function sendtoview(con,val):String { //create local connection for sending text var sending_lc:LocalConnection; sending_lc = new LocalConnection(); sending_lc.send("xivioview", "recieveText", val); return "kk" } ExternalInterface.addCallback("sendtoview", sendtoview);

Esto está configurado para un solo sentido, y el javascript para usarlo:

document.getElementById("youembeddedobject").sendtoview("xivioview","alert(''Hai!'')")

Eso ejecutará ese código JavaScript en la pestaña del receptor, pero no se ejecutará hasta que regrese a esa pestaña (ya hice una pregunta por qué, y todavía no tengo respuesta)



Simplemente tendría un javascript ejecutado en la carga de la página que sondearía continuamente (window.setInterval) la tienda de sesión para ver si alguien me había enviado un mensaje, luego lo leyó desde la tienda de sesiones y luego haría lo que fuera necesario.


Se admitió la comunicación entre diferentes contextos de ejecución de JavaScript incluso antes de HTML5 si los documentos eran del mismo origen. Si no es así o no tiene ninguna referencia al otro objeto de la Window , puede usar la nueva API postMessage introducida con HTML5. Desarrollé un poco en ambos enfoques en esta respuesta .