2010-11-12 13 views
7

Ho un'applicazione Web che viene avviata come seconda applicazione Web in una nuova finestra/scheda del browser. Voglio aggiornare il contenuto della pagina originale quando l'utente invia il suo input sulla seconda pagina.Come si comunica tra 2 schede/finestre del browser?

Real World Esempio: Google utilizza questo comportamento in GMail. Quando componi un nuovo messaggio se fai clic sul link "A", viene visualizzato un elenco dei tuoi contatti in una nuova finestra del browser. Ciò lascia aperta la finestra di composizione originale e attiva per l'immissione mentre l'utente può in qualsiasi momento selezionare i destinatari dell'email dall'elenco dei contatti. Quando inviano tale finestra, gli indirizzi e-mail selezionati vengono aggiunti all'elenco dei destinatari nella finestra di composizione originale.

Come è stato realizzato? Immagino che potrebbe essere fatto usando AJAX, ma idealmente la soluzione eviterà il round trip/logica di programmazione necessaria per instradarlo tramite il server.

Per riferimento, il mio stack tecnologico per questo è un'applicazione ASP.NET MVC che avvia una seconda app MV.NET di ASP.NET che contiene un'app Silverlight. Entrambe le applicazioni possono/fanno fare uso di jQuery.

Grazie per il vostro aiuto.

risposta

9

Non penso che tu intenda due schede. Ciò che Gmail sta facendo è comunicare tra un pop-up e il genitore.

Quindi diciamo che hai aperto una nuova finestra usando javascript. Nella finestra aperta si può fare:

opener.someFunction() per passare i dati indietro. Fammi trovare un esempio solido e incollarlo.

Modifica: Ecco un buon esempio. http://www.javascriptkit.com/javatutors/remote2.shtml

È possibile utilizzare l'apertura per fare molto.

+0

Questo appare come ciò che voglio usare. Ho provato i test semplici nel tuo link. Funziona perfettamente per Firefox e IE ma fallisce in Chrome. Il colore della finestra principale non viene mai aggiornato. Qualche idea del perché? – Justin

+0

@Amir: potresti voler incollare qui l'esempio, magari in uno snippet di codice, nel caso in cui il sito web JavaScriptKit non funzioni. –

+0

Questa soluzione sarebbe in grado di sfruttare la stessa sessione in un sito Web autenticato? –

-1

Avete due possibilità:

  1. polling costante (setInterval e AJAX)
  2. push (Comet e HTML 5 WebSocket API)
+0

eeh il polling delle schede forse ma non per aprire una nuova finestra. :) –

Problemi correlati