Forza l'iframe a caricare il fotogramma intero
-
10-07-2019 - |
Domanda
Ho una pagina HTML (diciamo welcome.html) che contiene un iframe in una pagina su cui non ho alcun controllo (diciamo app.html). L'utente esegue alcune azioni utilizzando l'app all'interno dell'iframe e invia i clic. Una volta che lo fanno, vengono portati in una nuova pagina (dire grazie.jsp), che viene caricata all'interno dell'iframe. Esiste un modo in cui posso forzare thanks.jsp per caricare l'intero frame e non l'iframe dopo aver fatto clic su Invia? Ricorda, non ho alcun controllo sulla logica dietro quel pulsante Invia o app.html. Tuttavia ho il controllo su welcome.html e thanks.jsp. Se possibile, vorrei attenermi a HTML e / o JavaScript. Grazie in anticipo.
Soluzione
Probabilmente vuoi usare un framebuster, con un target di base nel caso fallisca.
Per prima cosa:
Se thanks.jsp
viene richiesto tramite una richiesta di post, reindirizzare in modo da presentare la pagina come risposta a una richiesta get.
Quindi:
Includi JavaScript framebuster:
<script type="text/javascript">
if (self != top) { top.location.replace(location); }
</script>
Infine:
Nel caso in cui l'utente non abbia JavaScript abilitato, assicurarsi che non rimangano più nel frame quindi devono:
<base target="_top">
Altri suggerimenti
Su thanks.jsp
puoi inserire il seguente JS:
// Parent window not the same as this one
if (self !=top)
{
top.location.href = self.location.href;
}
Funzionerà a condizione che tu abbia thanks.jsp
sullo stesso server della pagina originale che contiene il frame, a causa di stessa politica di origine .
Il codice sopra controlla l'URL della pagina in cui ti trovi, quindi quella della pagina su cui è in esecuzione ( thanks.jsp
) - se non corrispondono ti viene inviato l'URL thanks.jsp
. Questo metodo funziona perfettamente quando thanks.jsp
è una pagina statica, ma non trasporta postdata ecc. Con essa.