2013-06-18 25 views
6

voglio aprire una nuova scheda per un pagamento bancario sul mio sito web utilizzando JavaScript, e senza la finestra principale di navigazione via,Javascript aperta una nuova scheda, e attendere che per chiudere

quando l'utente è lontano dalla pagamento bancario su un URL di ritorno, voglio rilevare la risposta dell'URL di ritorno dall'altra finestra (se possibile) o semplicemente notificare alla finestra principale che la transazione è stata eseguita e controllare gli aggiornamenti del database.

Ho visto questo comportamento su diversi siti Web, come ad esempio popup->login->popup closes->main window reloads con la sessione caricata, Il problema è che non so come si chiama questo metodo, quindi non so quale parola chiave sto cercando .

Quello che esattamente bisogno è il nome di questo metodo, o come si fa (come una determinata parola chiave in JavaScript o qualcosa)

Grazie in anticipo

+2

Invece di utilizzare nuove finestre e schede. Consiglio vivamente l'uso di un popup modale. – Smeegs

+0

Penso che il particolare sistema di cui non si conosce il nome sia OAuth, ad esempio, [Come autenticarsi con Google tramite OAuth 2.0 in un popup?] (Http://stackoverflow.com/questions/7947038/how-to- autenticarsi-con-google-via-oauth-2-0-in-a-popup) – apsillers

+0

@Javalsu L'utilizzo di questo avrebbe bisogno di SSL sul mio sito web o di un Iframe corretto? e la gente si sente più sicura quando sa che è il sito web dall'URL invece di qualcosa che potrebbe essere phishing. –

risposta

2

Prima di chiudere il popup, prova opener.someFunction() a chiama una funzione nella finestra che l'ha aperta. Si noti che ciò non riuscirà se l'utente chiude la prima finestra o se l'utente lo ha spostato su un altro sito o se le due finestre si trovano su domini diversi per qualsiasi motivo.

+1

Grazie per questo metodo, ma solo un valore aggiunto alla risposta, Windows non può comunicare tra loro se si trovano su domini diversi, ho dovuto aspettare che il gateway bancario torni su un URL sul mio dominio per eseguire l'apertura .function(), considererà questa una risposta. –

6

È possibile aprire una nuova pagina utilizzando window.open e quindi controllare periodicamente per vedere se la finestra è stata chiusa. Il riferimento alla finestra aperta viene restituito da window.open e puoi verificare se è stato chiuso utilizzando windowHandle.closed.

btn.onclick = function() { 
    var win = window.open(
     "http://www.stackoverflow.com", 
     "Secure Payment"); 
    var timer = setInterval(function() { 
     if (win.closed) { 
      clearInterval(timer); 
      alert("'Secure Payment' window closed !"); 
     } 
    }, 500); 
} 

Sede, anche, questo short demo.

Per ulteriori informazioni su window.open e best practice, dare un'occhiata a MDN.

+0

Ho usato window.open e faccio un window.close sulla nuova finestra quando ha finito, non ho ancora implementato un metodo per controllare se la finestra è prematuramente chiusa, considererò questo metodo quando raggiungerò quella parte. –

+0

Grazie funziona per me. :) –

Problemi correlati