Frame Reparatie met Javascript


Frames kunnen een handig hulpmiddel zijn om een pagina vorm te geven. Ze geven bijvoorbeeld de mogelijkheid een 'vast' gedeelte zoals een navigatie-menu te scheiden van een 'dynamisch' deel : de inhoud. Het website met frames bestaat uit een frame-pagina welke de definitie van de frames bevat en uit sub-pagina's met de daadwerkelijke inhoud. Het kan gebeuren dat een bezoeker via bijvoorbeeld een zoekmachine uitkomt op een subpagina in plaats van de frame-pagina. Gevolg is dat de bezoeker het andere deel van de pagina mist, lastig als dit een navigatie-menu is. Het is mogelijk frames te repareren met behulp van javascript. Hieronder een manier:

Als voorbeeld een eenvoudig frame met een linker en een recht deel. Het linkerdeel is altijd hetzelfde, het zou een menu kunnen zijn bijvoorbeeld.

In onderstaand voorbeeld met index.html als framepagina, met links.html en rechts.html als sub-frames. Er ontstaat een probleem als iemand (bijvoorbeeld via een zoekmachine) rechtstreeks naar rechts.html gaat. Het linker deel mist.

index.html (demo)

 
<frameset cols="25%,*">
<frame src='links.html' name=links/>
<frame src='rechts.html' name=rechts/>
</frameset>

links.html

 
<body bgcolor=gray>
Ik ben het linker frame
</body>

rechts.html (demo)

<body bgcolor=silver>
Ik ben het rechter frame
Probeer <a href=rechts.html target='_blank'>mij</a> eens te openen:
<br/>
<p>
<a href=rechts.html target='_blank'>rechts.html</a>
</p>
Je ziet een nieuw window zonder frame.
<br/>
Nu hetzelfde met het stukje javascript:
<p>
<a href=rechts_java.html target='_blank'>rechts.html</a>
</p>
</body>

Het probleem is op te lossen door een stukje javascript. Uiteraard werkt dit alleen bij browsers die javascript ondersteunen, maar dat is bij een groot deel van de bezoekers het geval. Beter blijft om frames helemaal te verwijderen.

rechts_java.html (demo)

uiteraard hoef er geen _java in de naam van de pagina te staan, dat is voor de demo

<SCRIPT>
if(parent.frames.length == 0){
document.write('<frameset  cols="25%,*" cols="*">'
+ '<frame src="links.html" name="links" />'
+ '<frame src="' + window.location +'?" name="rechts" />'
+ '</frameset><noframes>');
}
</SCRIPT>
<body bgcolor=silver>
Ik ben het rechter frame met frame reparatie

Het stukje script kun je ook in een .js file plaatsen

<SCRIPT src=framefix.js>

Mochten de rechter pagina's in subdirectories staan is het nodig de absolute URL in het script te zetten:

<SCRIPT>
if(parent.frames.length == 0){
document.write('<frameset  cols="25%,*" cols="*">'
+ '<frame src="/pad_naar_bestand/links.html" name="links" />'
+ '<frame src="' + window.location +'?" name="rechts" />'
+ '</frameset><noframes>');
}
</SCRIPT>

of

<SCRIPT>
if(parent.frames.length == 0){
document.write('<frameset  cols="25%,*" cols="*">'
+ '<frame src="[=http://server/pad_naar_bestand/links.html=]" name="links" />'
+ '<frame src="' + window.location +'?" name="rechts" />'
+ '</frameset><noframes>');
}
</SCRIPT>


©

 
 

Main Home

Index

Contact

Laatste wijzigingen