Frage

Ich habe eine HTML-Seite (sagen wir welcome.html), die ein iframe auf eine Seite enthält ich keine Kontrolle über (sagen wir app.html). Der Benutzer führt einige Aktionen die App innerhalb des iframe und Klicks einreichen. Sobald sie das tun, werden sie auf eine neue Seite (sagen wir thanks.jsp) genommen, die innerhalb des iframe lädt. Gibt es eine Möglichkeit, in der ich thanks.jsp lädt im vollen Rahmen zwingen kann und nicht die iframe einmal geklickt einreichen? Denken Sie daran, ich habe keine Kontrolle über die Logik hinter der Schaltfläche Senden oder app.html. Ich habe jedoch die Kontrolle über welcome.html und thanks.jsp. Wenn möglich, würde ich mit HTML halten mag und / oder JavaScript. Vielen Dank im Voraus.

War es hilfreich?

Lösung

Sie wollen wahrscheinlich ein framebuster, mit einem Basis-Ziel verwenden, falls es nicht.

Erstens:

Wenn thanks.jsp über eine Post-Anforderung angefordert wird - umleiten, so dass es Ihnen die Seite als Antwort auf eine GET-Anfrage stellen

.

Dann:

Fügen Sie

framebuster JavaScript:

<script type="text/javascript">
   if (self != top) { top.location.replace(location); }
</script>

Schließlich:

Wenn der Benutzer nicht über JavaScript aktiviert ist, stellen Sie sicher, bleiben sie nicht in dem Rahmen nicht mehr dann sie müssen:

<base target="_top">

Andere Tipps

Auf thanks.jsp Sie in der folgenden JS setzen können:

// Parent window not the same as this one
if (self !=top) 
{
    top.location.href = self.location.href;
} 

Das wird funktionieren, vorausgesetzt, Sie auf dem gleichen Server wie die Originalseite haben thanks.jsp den Rahmen enthält, aufgrund der

scroll top