Alles over frames
Waarom worden frames afgeraden?
Frames zijn een techniek om meerdere pagina’s binnen één browservenster te presenteren. In het venster worden via een zogenaamde frameset pagina secties gereserveerd waarin afzonderlijke pagina’s worden geladen.
Deze secties zijn afzonderlijk te laden en te scrollen. Hierdoor kan de webontwikkelaar bijvoorbeeld in een frame een serie navigatielinks laden die de bezoeker bij het volgen ervan resultaat tonen in een ander frame.
Sinds de introductie van frames in 1995 door Netscape (en de acceptatie ervan in de W3C HTML 4.0 specificatie in 1997) is de technologie en werking van frames nauwelijks veranderd.
Inhoudsopgave
- Nadelen van frames
- Frames en toegankelijkheid
- Richtlijnen voor het gebruik van frames
- Alternatieven voor frames
Nadelen van frames
Frames zijn een intrigerend concept, maar hebben enkele zeer grote nadelen.
-
Frames breken met het fundamentele principe dat informatie bestaat op individuele, linkbare webpagina’s met een eigen adres.
Het adres dat zichtbaar is in de browser is het adres van de frameset-pagina en niet dat van de pagina’s binnen de frameset. Zie ook Permanente, unieke URL’s. -
Het is bijzonder lastig voor bezoekers een pagina binnen een frameset toe te voegen aan hun favorieten (bookmarks).
Een bezoeker bezoekt de site met de frameset en surft dieper de site in. De pagina’s binnen de frameset veranderen, maar het adres in de browser niet. Dit is het adres dat wordt opgenomen in de favorieten van de bezoeker. Een terugkerende bezoeker zal de desbetreffende pagina opnieuw moeten opzoeken. -
Om dezelfde reden hebben zoek-spiders problemen met websites die frames gebruiken.
Deframeset-pagina is niets anders dan een document dat de indeling van de frames beschrijft; hij bevat geen tekstuele inhoud. Daardoor zal deze pagina zelden in de zoekresultaten op zoekmachines voorkomen. Een zoek-spider daalt af in de individuele frames binnen de frameset en indexeert individuele pagina’s. Deze pagina’s duiken wél op in de zoekresultaten voor een potentiële bezoeker. Wanneer de links naar deze pagina’s worden gevolgd, worden ze getoond buiten de frameset. Daardoor zijn ze mogelijk verstoken van navigatie of andere relevante inhoud die zich in andere frames bevindt. -
Frames-markup wordt toegepast voor de presentatie van de website en is daarmee in strijd met het principe van scheiding tussen structuur en vormgeving.
Zelden worden frames voor iets anders toegepast dan het opzetten van een lay-out. Dit kan effectiever door middel van CSS (Cascading Style Sheets) of tabellen. Zie ook Alles over CSS en Tabellen voor lay-out. -
Frames geven problemen bij het printen.
Een browser kan namelijk niet weten welk frame moet worden geprint. Als alle frames samen worden geprint, weet de browser niet of alleen het stuk wordt geprint dat zichtbaar is in het kader van het frame of het hele document. -
Frames veroorzaken problemen voor de weergave van de site in browsers op kleinbeeldsystemen, zoals mobiele telefoons en PDA’s.
Sites waarvan de vormgeving bepaald is met CSS of tabellen, passen zich aan aan de beperkte ruimte in het venster. Pagina’s met frames laten de gebruiker onnodig scrollen. -
Frames kunnen leiden tot copyright-problemen wanneer externe sites (zonder toestemming) in de frameset van een site worden geladen.
Links naar externe sites in pagina’s binnen frames moeten dan voorzien worden van eentargetattribuut om de gelinkte site buiten de frameset te laden. -
Frames hebben in hun huidige vorm geen toekomst.
De benodigde markup voor frames komt niet voor in de HTML 4.01 Strict specificatie, de aangeraden HTML-variant. Ook voorstellen voor toekomstige versies van XHTML laten doorschemeren dat frames in deze vorm niet langer ondersteund zullen worden.
Links en referenties
-
Why Frames Suck (Most of the Time)
Jakob Nielsen -
Some Caveats with Using Frames
Adrian Roselli
Frames en toegankelijkheid
Er wordt wel beweerd dat frames ten koste gaan van de toegankelijkheid van een site. Dit is slechts gedeeltelijk waar: zowel zoek-spiders als vrijwel alle moderne browsers zijn in staat een bezoeker naar pagina’s binnen frames te laten navigeren.
Het gaat echter niet altijd even gemakkelijk. Als navigatie in een ander frame staat dan de hoofdinhoud, moeten bezoekers met schermleesprogramma’s, brailleleesregels en tekstbrowsers pendelen tussen twee of meer frames. Het opgeven van een beschrijvend label voor elk afzonderlijke frame in de frameset-pagina via het name attribuut en het title attribuut kan deze uitdaging vergemakkelijken.
Browsers en zoek-spiders die geen frames ondersteunen, kunnen geholpen worden met alternatieve inhoud binnen <noframes></noframes> en <iframe></iframe> tags. Hierbinnen kan een link worden opgenomen naar het document dat normaliter binnen het frame getoond wordt.
In plaats van een link, kan ook een gedeelte van het gelinkte document binnen deze tags worden opgenomen. Dit zal echter in veel gevallen leiden tot duplicatie van inhoud. Dit betekent zowel extra onderhoud, als ondermijning van het 'nut' van frames voor het bundelen van inhoud. Het geheel afzien van frames maakt deze voorzieningen onnodig.
Richtlijnen voor het gebruik van frames
Handhaving van frames op websites vormen een bedreiging voor de bereikbaarheid en duurzaamheid van de informatie op deze sites. Daarom wordt het gebruik ervan ten zeerste afgeraden. Zie R-pd.12.1: Gebruik geen frames op websites. Dit geldt voor zowel reguliere frames binnenframesets, als zogenaamde iframes.
Er bestaan mogelijkheden om de nadelen van frames 'op te lossen' – variërend van client-side scripts (bijvoorbeeld JavaScript) die de frameset en URL corrigeren, tot afzonderlijke text-only websites. De enige oplossing die toereikend en duurzaam genoeg is, is het vermijden, dan wel verwijderen van frames op websites.
Alternatieven voor frames
Frames voor presentatie van de inhoud
Voor de presentatie van de inhoud – de vormgeving en de lay-out – kan beter CSS (Cascading Style Sheets) worden gebruikt dan Frames. CSS maakt het mogelijk om de lay-out van een website in rijen en kolommen in te delen, met hetzelfde visuele effect als Frames. Specifiek voor secties in de lay-out die afgekaderd en scrollbaar moeten zijn (een kenmerk van iframes), of secties die niet mee mogen scrollen, is CSS uitermate geschikt.
Zie ook Tabellen voor lay-out.
Frames voor het bundelen van terugkerende inhoud
Soms gebruiken webontwikkelaars Frames voor het plaatsen van inhoud die telkens (onveranderd) terugkeert op andere pagina’s; bijvoorbeeld, een lijst met hoofdnavigatie.
Server-side oplossingen
Het bundelen van terugkerende inhoud kan beter gebeuren op de webserver, door middel van server-side scripts – zoals PHP – of SSI (Server Side Includes). Bij deze techniek worden afzonderlijke bestanden gebundeld op de webserver en als één document, met één URL, teruggestuurd naar de browser.
Pre-processing HTML
Niet elke webontwikkelaar heeft beschikking over of ervaring met deze server-side technologieën. In dat geval bestaat de mogelijkheid afzonderlijke bestanden automatisch te laten bundelen voor publicatie. Veel ontwikkelprogramma’s stellen de gebruiker ervan in staat om markeringen in een document te maken voor invoeging van een ander bestand. Voordat het document op de webserver geplaatst wordt kan het programma automatisch alle bestanden doorlopen op deze labels, ze bundelen en opslaan als een definitieve, gebundelde versie. Dit proces wordt ook wel omschreven als 'pre-processing'.
