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.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top