Frames

Voordelen en nadelen

Katinka Hesselink 2006

Frames zijn webpagina's die bestaan uit andere pagina's. Dit klinkt wat vreemd, maar een bekend voorbeeld van een frame-pagina is een site waarbij links een menu zit dat niet mee beweegt met het scrollen van de tekst rechts. Frames hebben een aantal voordelen en veel nadelen. Het meest ingrijpende nadeel is het feit dat zoekmachines moeite hebben met frames. 

Er zitten twee voordelen aan frames. Ze liggen vrij voor de hand en zijn de reden dat frames vrij veel gebruikt worden op sites. Als je een menu hebt dat je steeds wilt laten zien, is het handig om daar een apart document van te maken. Als je dan iets wil verandere, hoef je maar een document te veranderen. Het andere voordeel is dat het menu op zijn plek blijft terwijl je naar beneden scrolt voor de rest van een tekst - een artikel bijvoorbeeld. Dit is een duidelijk gebruiksvoordeel. 

De nadelen van frames

Er zijn nadelen van frames voor de volgende categorien gebruikers/bezoekers:

Gewone mensen

Het grote nadeel van frames voor gewone bezoekers is dat ze niet een specifieke pagina in hun bookmarks kunnen zetten. Dit maakt het terug vinden van informatie erg lastig.

Mensen met screenreaders en zoekmachines

De nadelen van frames voor screenreaders en zoekmachines zijn heel erg het zelfde. Er wordt wel gezegd dat accessibility design en zoekmachine vriendelijk websites bouwen precies het zelfde is. Dat is niet helemaal waar: zoekmachines vinden de inhoud van frames tegenwoordig prima. 

Mensen met screenreaders (blinden bijvoorbeeld) bekijken een website alsof ze tekst-browsers zijn. Dat wil zeggen dat ze niets kunnen met de twee documenten die de browser laadt. Ze komen terecht in het 'no frames' gedeelte van de site. Om dit verder uit te kunnen leggen, volgt hier de basis code van een frames-site die de toegankelijkheidsproblemen redelijk op lost:

<FRAMESET COLS="*,4*" BORDER=5 NAME="whole" 
frameborder="1">
<FRAME NAME="menu" TARGET="main"
SRC="utils/menu.htm" SCROLLING="auto">
<FRAME NAME="main" TARGET="main"
SRC="utils/main.htm" SCROLLING="auto">
</FRAMESET>

<NOFRAMES>

<BODY>
<p>Deze website gebruikt frames</p>
<p><a href="utils/menu.htm">Algemeen menu</a>
</p>
</BODY>

</NOFRAMES>

Het stukje tussen de <frameset> en </frameset> code is voor gewone browsers. Je ziet een relatieve verwijzing naar het menu en de algemene content. Klaar is kees. Maar wat moet een screenreader nu voorlezen? Hier zijn twee oplossingen voor. De eerste is het toevoegen van een title-tag - als volgt: 

<FRAMESET COLS="*,4*" BORDER=5 NAME="whole" 
frameborder="1">
<FRAME NAME="menu" TARGET="main"
SRC="utils/menu.htm" SCROLLING="auto"

title="menu">

<FRAME NAME="main" TARGET="main"
SRC="utils/main.htm" SCROLLING="auto"

title="inhoud"
>

</FRAMESET>

De title-tag is inhoud die de screen-reader voor kan lezen en waar vervolgens iemand uit kan besluiten welke van de twee frames hij wil laten voorlezen. 

Nog twee problemen

Op de hoofdpagina van de site, waarvan we de code hierboven gegeven hebben, staat geen enkele aanduiding die aan geeft waar de site over gaat. Omdat mensen wel zullen linken naar de hoofdpagina, is dat de pagina met de hoogste google-rating. Die pagina is dus de eerste kandidaat om in zoekresultaten goed uit te komen. Als je geen tekst op die pagina hebt, heb je niets aan die google-rating. De oplossing: zet tekst in je noframes gedeelte. 

Een volgend probleem is dat google nu alle pagina's van je website kan vinden, maar dat bezoekers daar dan ook echt terecht zullen komen. Dit is een probleem omdat dan niet het hele ontwerp, maar slechts een pagina - meestal zonder menu en dergelijke - zichtbaar is. Een klant van mij had dat probleem: bezoekers vinden wel een individuele pagina, maar zien niet een menu en zelfs niet een link naar een menu. De oplossing is duidelijk: ergens op elke pagina een goed vindbare link naar de hoofd-pagina. 

De toekomst

Op dit moment is het effect dat we met frames bereiken ook echt alleen met frames te bereiken. In de nabije toekomst zijn de voordelen van frames te combineren met de voordelen van een menu dat in een pagina vast zit. Met een server-side include kun je zorgen dat elke pagina het zelfde menu mee krijgt dat je op de server in een file hebt zitten. Dit is nu al mogelijk.

Met CSS en de eigenschap position: fixed is het mogelijk een element een vaste plek op het scherm te geven die niet verandert als de gebruiker scrolt. Waar zit nu het probleem? Je raad het al: Internet Explorer van Microsoft ondersteunt deze mogelijkheid (nog) niet. Hopelijk gaat ze dat wel doen in IE7. 

Zo af en toe kom ik al pagina's tegen die in Firefox precies deze mogelijkheid van CSS laten zien. De IE gebruiker ziet dan niets bijzonders: het menu schuift gewoon van het scherm als de gebruiker scrolt. Voor professionele websites is dit echter om begrijpelijke redenen niet echt een optie.

Conclusie

Frames zijn leuk, maar hebben grote nadelen. Wie hier geen rekening mee houdt, snijdt zichzelf in de vingers. Wie problemen wil hebben met hoe de site in google gevonden wordt, moet vooral frames gebruiken. Er zijn wel wat omwegen om toch een redelijk resultaat te krijgen, maar die zijn behoorlijk onhandig en moeilijk bij te houden.