El envío de un mensaje a todas las ventanas / pestañas abiertas usando JavaScript [duplicado]

StackOverflow https://stackoverflow.com/questions/1100336

Pregunta

    

Esta pregunta ya tiene una respuesta aquí:

    
            
  •              La comunicación entre pestañas o ventanas                                      9 respuestas                          
  •     
    

Me oír HTML5 tiene window.postMessage(), pero parece requerir que tiene un mango en la ventana (o pestaña, a lo largo de esta pregunta) usted está enviando el mensaje a. ¿Qué pasa si quiero transmitir a todas las ventanas abiertas? ¿Es esto posible?

(Lo que estoy tratando de hacer es advertir a otras ventanas sin viajes al servidor cuando un usuario hace algo en una ventana que afecta a los otros, para que puedan actualizar su contenido. Sin embargo, aunque se puede abrir algunas ventanas de los ya existentes - que me permite interceptar y almacenar referencias a ellos -. frescas algunas ventanas se pueden abrir manualmente por el usuario y luego un marcador seleccionado o URL mecanografiados en en este caso no parece ser una manera de interceptar y almacenar referencias.)

¿Fue útil?

Solución

OMI esto no es posible usar el postMessage. Cómo sobre el uso sessionStorage localStorage? Escribir en él debe generar un evento de almacenamiento que debe ser propagado a todas las ventanas que comparten el mismo almacenamiento de sesión.

Otros consejos

Me escribió una biblioteca para hacer precisamente esto: intercom.js (para la misma razones por las que resumido).

Actualmente estamos usarlo para transmitir notificaciones a todas las ventanas, por lo que sólo una ventana necesita mantener una conexión de socket con el servidor. Como algunos otros sugirieron, que utiliza la API de almacenamiento local.

El uso es muy simple:

var intercom = Intercom.getInstance();

$('a').on('click', function() {
     intercom.emit('notice', {message: 'Something just happened!');
});

Para coger el mensaje,

intercom.on('notice', function(notice) {
    console.log(notice.message);
});

La interfaz está diseñada para imitar socket.io .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top