2012-01-09 3 views
6

Sto costruendo un'app che implica l'autenticazione tramite terze parti. Per fare in modo che il processo non reindirizzi l'app effettiva, apro una nuova finestra che esegue l'autenticazione e torna alla finestra principale dopo il successo.window.opener è inutile dopo un reindirizzamento nella finestra popup (JavaScript)

Tuttavia, ciò non va come previsto. Quando il popup reindirizza a terze parti e viceversa, window.opener diventa null. E 'ancora possibile chiudere il pop-up da window.close() ma ho anche bisogno di aggiornare il login-in-zona nella finestra principale, in questo modo:

window.opener.check_auth_status(); 

Spero davvero che ci sia un modo per risolvere questo problema, per esempio vincolare una funzione a popup-close nella finestra principale? Rinfrescare l'intera pagina sarebbe altamente inutile.

Un modo è quello di set an interval to main window controllare se il popup è chiuso, ma questo sembra così laborioso.

+0

esattamente che sta lavorando per me. Apro un popup a twitter/facebook, dopo che reindirizzano il popup, richiamo window.opener per aggiornare. Forse il tuo callback è diverso per dominio/porta, perché funziona solo per la stessa pagina per accedere allo stesso modo. – webstrap

risposta

9

avete alcune opzioni che possono o non possono funzionare nelle ultime versioni dei browser a causa di aggiornamenti di sicurezza

1) verificare che la finestra è chiusa dalla opener - non poco pratici e in realtà il più sicuro

2) dare l'apri un nome

window.name="myMainWindow"; 

e nel popup (script da stesso dominio) - dovrebbe di norma non aprire una nuova finestra o modificare il contenuto

var handle = window.open("","myMainWindow"); 
handle.check_auth_status(); 

3) utilizzare un iFrame nel popup e quando si desidera accedere la gara di apertura, utilizzare top.opener

+2

Ti amo ..... –

+1

In un modo fraterno spero :) – mplungjan