2009-12-02 21 views
6

Tengo la ventana principal del navegador P. al hacer clic en un botón se abre una nueva ventana del navegador WIN-A. y presionando nuevamente el mismo botón, debería leer el título de la ventana de WIN-A y abrir WIN-B¿Cómo comunicarse entre dos ventanas del navegador?

cómo lograr esto usando Javascript?

Gracias de antemano

Respuesta

3

Una pregunta similar se acaba preguntó recientemente:

desbordamiento de pila pregunta: Quickest way to pass data to a popup window I created using window.open()?

Usando esto como una base (y siempre que los padres y WIN-A están en el mismo dominio):

// Put outside click handler 
var winA = null; 

// Put inside click handler 

if(!winA){ 
    // Store the return of the `open` command in a variable 
    var winA = window.open('http://www.mydomain.com/page1'); 
} else { 
    var title = winA.document.title; 
    // Do something with title 
    var winB = window.open('http://www.mydomain.com/page2'); 
} 
4

Dado:

var myWindow = open("foo.bar"); 

Viejo método: Cambia name la propiedad del objeto de la ventana:

myWindow.name = "..."; 
// in foo.bar: 
setInterval(someFunctionToCheckForChangesInName, 100); 

método de HTML5: Call postMessage el método del objeto ventana:

myWindow.postMessage("...", "*"); 
// in foo.bar: 
(window.addEventListener || window.attachEvent)(
    (window.attachEvent && "on" || "") + "message", function (evt) { 
    var data = evt.data; // this is the data sent to the window 
    // do stuff with data 
    }, 
false); 
+2

que nunca había visto el (possibly_present_func_one || possibly_present_func_two) (args, args); técnica antes. Guay. –

+0

Trevor: no olvides usar '.call (the_object_that_is_supposed_to_be_the_parent, args)' si no es una propiedad de 'window'. –

+0

Es genial usar asignaciones sofisticadas y operaciones de taquigrafía, pero para una página como SO, donde el objetivo principal es compartir conocimiento, no es el mejor enfoque. La gente no se siente cómoda con JS "||" - o las asignaciones deben pensar que parece críptico y poco intuitivo. –

0

Cuando se llama a window.open, devuelve una referencia a la ventana recién abierta. Puede almacenar las referencias a las ventanas que abre en una matriz, y luego iterar esa matriz cuando necesite abrir otra ventana nueva.

Gabriel

Cuestiones relacionadas