Frames van de aanroepende pagina overschrijven
De inhoud van dit verhaal is verouderd. Dat komt doordat frames in de HTML5-specificaties niet meer voorkomen.
Er zijn echter nog veel websites die in HTML 4 zijn geschreven. Ook wordt er nog steeds in HTML 4 ontwikkeld.
Het onderstaande verhaal blijft voorlopig dus geldig. Op deze site wordt het nog gewoon onderhouden.
Het onderstaande verhaal blijft voorlopig dus geldig. Op deze site wordt het nog gewoon onderhouden.
Als je een web-pagina oproept vanuit een pagina met frames zal die pagina in het actieve frame worden geladen. Als de
opgeroepen pagina zelf ook frames bevat zie je al gauw niet meer wat nou bij wat hoort.
Hier wordt een methode beschreven om de frames van de aanroepende pagina te verwijderen. Dit wordt netjes gemeld.
De code staat onderaan deze bladzijde. Je kunt hem ook downloaden.
- Het werkt als volgt:
- Er wordt gebruik gemaakt van self en top. Dit zijn eigenschappen van window, ofwel van het browser-venster zelf.
- Als er een nieuwe pagina wordt ingeladen in een browser-window dan geldt:
self is gelijk aan top. - Als er een nieuwe pagina wordt ingeladen in een frame-window dan geldt:
self is ongelijk aan top. - In dat laatste geval gaat het script aan het werk:
- Er wordt een alert gegeven dat de bestaande frames worden
overschreven.
Als je dat wilt kun je de tekst van de alert wijzigen.
Zorg ervoor dat de code voor de alert op één regel staat, anders werkt het niet. - top.location.href wordt gelijk gemaakt aan self.location.href.
De eigenschap location.href bevat de URL van de aangeroepen pagina.
Gebruik:
- Zet de code in de <HEAD> van de HTML-file die de bestaande frames moet overschrijven.
De code ziet er als volgt uit:
<script>
/* (c) 2001 Ben Boukes
mag vrij gebruikt worden
*/
if (self != top) {
window.alert("Bestaande frames worden overschreven.\n\nDeze site bevat nl. zelf frames!");
top.location.href = self.location.href
}
</script>