pestaña - cerrar ventana javascript chrome
Enviando un mensaje a todas las ventanas/pestañas abiertas usando JavaScript (3)
Esta pregunta ya tiene una respuesta aquí:
- Comunicación entre pestañas o ventanas 8 respuestas.
Escuché que HTML5 tiene window.postMessage()
, pero parece que requiere tener un controlador en la ventana (o pestaña, a lo largo de esta pregunta) en la que está publicando el mensaje. ¿Qué pasa si quiero transmitir a todas las ventanas abiertas? es posible?
(Lo que estoy tratando de hacer es advertir a otras ventanas sin ningún tipo de redondeo al servidor cuando un usuario hace algo en una ventana que afecta a las otras, para que puedan actualizar su contenido. Sin embargo, mientras que algunas ventanas pueden abrirse desde las existentes - permitiéndome interceptar y almacenar referencias a ellas - el usuario puede abrir manualmente algunas ventanas nuevas y luego seleccionar un marcador o una URL introducida. En este caso, no parece haber una forma de interceptar y almacenar referencias .)
Escribí una biblioteca para hacer precisamente esto: intercom.js (por las mismas razones que describiste).
Actualmente lo estamos utilizando para transmitir notificaciones a todas las ventanas, por lo que solo una ventana necesita mantener una conexión de socket al servidor. Como algunos otros sugirieron, utiliza la API localStorage.
El uso es realmente simple:
var intercom = Intercom.getInstance();
$(''a'').on(''click'', function() {
intercom.emit(''notice'', {message: ''Something just happened!'');
});
Para captar el mensaje,
intercom.on(''notice'', function(notice) {
console.log(notice.message);
});
La interfaz está diseñada para imitar socket.io .
OMI, esto no es posible utilizando el mensaje de correo. ¿Qué hay de usar sessionStorage localStorage? Escribir en él debe generar un evento de almacenamiento que debe propagarse a todas las ventanas que comparten el mismo almacenamiento de sesión.
Recomiendo usar https://github.com/studentIvan/dueljs breve: http://dueljs.studentivan.ru y docs: https://dueljs.readthedocs.org/en/latest/