Solución:
Para obtener una solución más moderna, consulte https://stackoverflow.com/a/12514384/270274
Cita:
Me apego a la solución de datos locales compartidos mencionada en la pregunta usando
localStorage
. Parece ser la mejor solución en términos de confiabilidad, rendimiento y compatibilidad del navegador.
localStorage
se implementa en todos los navegadores modernos.los
storage
evento se dispara cuando otro pestañas realiza cambios enlocalStorage
. Esto es bastante útil para fines de comunicación.Referencia:
http://dev.w3.org/html5/webstorage/
http://dev.w3.org/html5/webstorage/#the-storage-event
Esta es una respuesta antigua, sugiero usar la versión moderna que se describe aquí:
Javascript; comunicación entre pestañas / ventanas con el mismo origen
Puede comunicarse entre las ventanas del navegador (y también las pestañas) mediante cookies.
A continuación, se muestra un ejemplo de remitente y receptor:
sender.html
<h1>Sender</h1>
<p>Type into the text box below and watch the text
appear automatically in the receiver.</p>
<form name="sender">
<input type="text" name="message" size="30" value="">
<input type="reset" value="Clean">
</form>
<script type="text/javascript"><!--
function setCookie(value) {
document.cookie = "cookie-msg-test=" + value + "; path=/";
return true;
}
function updateMessage() {
var t = document.forms['sender'].elements['message'];
setCookie(t.value);
setTimeout(updateMessage, 100);
}
updateMessage();
//--></script>
receptor.html:
<h1>Receiver</h1>
<p>Watch the text appear in the text box below as you type it in the sender.</p>
<form name="receiver">
<input type="text" name="message" size="30" value="" readonly disabled>
</form>
<script type="text/javascript"><!--
function getCookie() {
var cname = "cookie-msg-test=";
var ca = document.cookie.split(';');
for (var i=0; i < ca.length; i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(cname) == 0) {
return c.substring(cname.length, c.length);
}
}
return null;
}
function updateMessage() {
var text = getCookie();
document.forms['receiver'].elements['message'].value = text;
setTimeout(updateMessage, 100);
}
updateMessage();
//--></script>
No creo que necesites galletas. El código js de cada documento puede acceder a los demás elementos del documento. Entonces puedes usarlos directamente para compartir datos. Su primera ventana w1 abre w2 y guarda la referencia
var w2 = window.open(...)
En w2 puede acceder a w1 usando la propiedad abridor de window.