Actie in een ander frame

De leukste mogelijkheid van frames is die om een actie van de gebruiker een gevolg te laten hebben in een ander frame. Als de gebruiker dan dus op een linkje klikt in een frame, verschijnt er in een ander frame een nieuw HTML document, of een plaatje, of wat dan ook.

Dat geeft bijvoorbeeld de mogelijkheid om een smal frame te maken aan de rand van het venster, met daarin wat drukknoppen, of een `inhoudsopgave'. Als er dan op een knopje of linkje wordt geklikt, kan in het hoofdvenster de relevante pagina worden getoond.

Een voorbeeld daarvan kan je vinden op mijn EK'96 pagina; de linkerkant bestaat uit een menu van knoppen, die de rechterkant van het scherm besturen.

Netscape weten welk frame hij moet gebruiken als uitvoerframe. Daarvoor is het nodig om frames een naam te geven, en om vervolgens bij een referentie de naam op te geven van het frame waarin het resultaat moet worden getoond.

Het geven van de naam aan de frames gaat via het <frame> tag in de frameset:

  <frameset cols=104,*>
    <frame src="frame_links.html">
    <frame src="frame_default.html" name="content">
  </frameset>
Dit is de definitie zoals die werkt op deze pagina. De linkerhelft wordt geladen met frame_links.html, de rechter met frame_default.html. Dit frame krijgt de naam "content".

Als nu in frame_links.html een referentie staat op deze manier:

  <a href="frame_basis.html" target="content">Basis-uitleg</a>
wordt de pagina frame_basis.html in het rechterscherm getoond als er links op "Basis-uitleg" wordt geklikt.

Je kan een standaard-target opgeven aan het begin van het document, zodat je niet bij iedere link het target tag hoeft te zetten. Zet direct na de <body>-definitie de term <base target="content">.

Belangrijke opties

Het antwoord op vragen die ik het meest krijg naar aanleiding van frames staan hier onder. Lees:

Truuk 1: Als je de naam van een niet-bestaand frame opgeeft wordt een nieuw window van Netscape geopend. Als je op deze EK'96 link klikt zal je dit merken. De link ziet er zo uit:

    <a href="/michielb/ek96/" target="window">EK'96</a>

Truuk 2: Als je als target "_top" opgeeft, wordt weer het hele window van Netscape gebruikt i.p.v. je frames. Als je "_parent" gebruikt, gaat de link een frameset terug. Als je "_self" gebruikt, blijft de link in hetzelfde window (handig als je de <base target=xxx> wil laten negeren).