2013-06-18 19 views
6

chcę otworzyć nową kartę do płatności bankowych na mojej stronie za pomocą JavaScript i bez głównego okna nawigacyjnego z dala,JavaScript otwarta nowa karta, i czekać na to, aby zamknąć

gdy użytkownik jest z powrotem z bankowa płatność do zwrotnego adresu URL, chcę wykryć odpowiedź zwrotnego adresu URL z drugiego okna (jeśli to możliwe) lub po prostu powiadomić główne okno, że transakcja jest wykonana i powinna sprawdzić bazę danych pod kątem aktualizacji.

Widziałem to zachowanie na kilku stronach internetowych, takich jak popup->login->popup closes->main window reloads z załadowaną sesją. Problem polega na tym, że nie wiem, jak nazywa się ta metoda, więc nie wiem, jakiego słowa kluczowego szukam .

Czego dokładnie potrzebujesz to nazwa tej metody, czyli jak to się robi (jak danego słowa kluczowego w javascript lub coś)

Dzięki z góry

+2

Zamiast używać nowych okien i kart. Gorąco polecam za pomocą modalnego popup. – Smeegs

+0

Myślę, że konkretny system, którego nazwy nie znasz, to OAuth, np. [Jak uwierzytelniać się z Google przez OAuth 2.0 w wyskakującym okienku?] (Http://stackoverflow.com/questions/7947038/how-to- authenticate-with-google-via-oauth-2-0-in-a-popup) – apsillers

+0

@Javalsu Używanie tego wymagałoby użycia SSL w mojej witrynie lub elementu iframe? i ludzie czują się bezpieczniej, gdy wiedzą, że to strona internetowa z adresu URL, a nie coś, co może być phishingiem. –

Odpowiedz

2

Przed zamknięciem okienka popup, spróbuj opener.someFunction() do wywołać funkcję w oknie, które ją otworzyło. Zauważ, że to się nie powiedzie, jeśli użytkownik zamknął pierwsze okno lub jeśli użytkownik przeniósł go do innej witryny lub jeśli oba okna znajdują się w różnych domenach z dowolnego powodu.

+1

Dzięki za tę metodę, ale po prostu wartość dodana do odpowiedzi, okna nie mogą się ze sobą komunikować, jeśli znajdują się w różnych domenach, musiałem czekać, aż brama banku powróci do adresu URL w mojej domenie, aby uruchomić narzędzie otwierające .function(), uzna to za odpowiedź. –

6

Możesz otworzyć nową stronę, używając window.open, a następnie okresowo sprawdzać, czy okno zostało zamknięte. Odniesienie do otwartego okna jest zwracane przez window.open i można sprawdzić, czy zostało zamknięte przy użyciu 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); 
} 

Patrz także ten short demo.

Aby uzyskać więcej informacji na temat window.open i najlepszych praktyk, zobacz MDN.

+0

Użyłem window.open i wykonuję window.close w nowym oknie, gdy to zrobione, wciąż nie zaimplementowałem metody sprawdzania, czy okno jest przedwcześnie zamknięte, rozważę tę metodę, gdy dotrę do tej części. –

+0

Dzięki temu działa dla mnie. :) –

Powiązane problemy