2012-01-25 8 views
7

Próbowałem mieć mały widżet logowania, który umieszczam na statycznej stronie wewnątrz elementu iframe, aby umożliwić zalogowanie się do mojej witryny. Problemem jest to, że po opublikowaniu formularza pojawia się on w elemencie iframe zamiast w pełnej przeglądarce.Jak przesłać formularz z wewnątrz elementu iframe i uzyskać rezultat poza adresem

Wiem, że można to zrobić, ponieważ https://www.salliemae.com/ stosuje tę samą strategię na swojej stronie głównej. Osadzają element iframe wewnątrz swojej statycznej strony, która wykonuje dla nich całą ich logikę. Mam bardzo podobne javascript, że wywołuję form.submit(), gdy ktoś kliknie. Jedyna różnica polega na tym, że używam jQuery do przechwytywania zdarzenia kliknięcia a wstawiania onclick bezpośrednio do elementu formularza.

Sprawdziłem ich kod w pliku calm.js i wygląda na to, że robię proste form.submit() tak jak ja, ale ich strona ładuje się całkowicie w przeglądarce, a tylko w elemencie iframe. Rozejrzałem się po SO i nie widziałem podobnego postu, więc jeśli tylko spóźniłem się, proszę dać mi znać.

+0

Jeżeli wniosek krzyże domen , porty lub protokoły, przeglądarki go zestrzelają. Google [** XSS **] (http://en.wikipedia.org/wiki/Cross-site_scripting), aby uzyskać więcej informacji. – Blender

+0

w moim przypadku (i powyższy przykład salliemae) znajdują się w tej samej domenie. Więc na pytanie, jak to zrobić, zakładając, że oba są w tej samej domenie? Salliemae ma wspólną domenę niższego poziomu, są one w różnych subdomenach (www. Vs. login.) – Scott

Odpowiedz

15

Zobacz target="_top" w znaczniku iframe: <form>. To każe przeglądarce załadować odpowiedź w ramce nadrzędnej.

+0

ahh, waliłem w głowę, próbując dowiedzieć się, co to jest delta. dzięki! – Scott

1

Jeśli nie ajax zawartości, wystarczy dodać target = "_ top" do formy, w przeciwnym razie trzeba będzie użyć window.open (serialisedurl, "_ top")

Powiązane problemy