2008-10-11 7 views
1

J'ai une page HTML (disons welcome.html) qui contient un iframe à une page sur laquelle je n'ai aucun contrôle (disons app.html). L'utilisateur effectue certaines actions en utilisant l'application dans l'iframe et clique sur soumettre. Une fois qu'ils le font, ils sont redirigés vers une nouvelle page (disons merci.jsp), qui se charge dans l'iframe. Existe-t-il un moyen par lequel je peux forcer merci.jsp à charger dans le plein cadre et pas l'iframe une fois soumis est cliqué? Rappelez-vous, je n'ai aucun contrôle sur la logique derrière ce bouton Submit ou app.html. J'ai cependant le contrôle sur welcome.html et thanks.jsp. Si possible, je voudrais rester avec HTML et/ou JavaScript. Merci d'avance.Force iframe à charger le plein cadre

Répondre

5

Vous souhaitez probablement utiliser un framebuster, avec une cible de base en cas d'échec.

Première:

Sithanks.jsp est demandée par une demande de poste - si vous rediriger présente la page comme la réponse à une demande de get.

Puis:

Inclure framebuster JavaScript:

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

Enfin:

Si l'utilisateur ne dispose pas de Javascript, assurez-vous qu'ils ne restent pas dans le cadre plus longtemps alors ils doivent:

<base target="_top">
2

Sur thanks.jsp vous pouvez mettre en JS suivant:

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

Cela fonctionnera à condition que vous avez thanks.jsp sur le même serveur que la page originale contenant le cadre, en raison de la same origin policy. Le code ci-dessus vérifie l'URL de la page sur laquelle vous vous trouvez, puis celle de la page sur laquelle elle s'exécute (thanks.jsp). Si elles ne correspondent pas, vous êtes envoyé à l'adresse URL thanks.jsp. Cette méthode fonctionne correctement lorsque thanks.jsp est une page statique, mais ne transmettra pas de post-données, etc.

Questions connexes