JS | Frames | |
|
Handleiding HTML Overzicht JavaScript voorbeelden | Inhoud HTML | Inhoud CSS | Begin
In dit onderdeel worden enkele voorbeelden van scripts in combinatie met frames gegeven:
De voorbeelden werken correct in Netscape Navigator 3.0 en hoger en Microsoft Internet Explorer 4.0 en hoger. Met de eerste drie voorbeelden hebben Netscape Navigator 2, Microsoft Internet Explorer 3 en Opera 3/3.5 soms problemen (zie de toelichting bij de voorbeelden). Zorg dat je het bekijken van je site niet afhankelijk maakt van JavaScript. Lang niet elke bezoeker zal JavaScript gebruiken en daarom is het belangrijk dat de site ook goed bekeken kan worden zonder het updaten van frames met behulp van JavaScript. Meerdere frames tegelijk updatenMet behulp van JavaScript kun je met één klik op een hyperlink twee frames tegelijkertijd updaten. Dat is vooral handig wanneer je niet de inhoud van alle frames van een frameset wilt wijzigen, of wanneer het gaat om frames die niet tot hetzelfde frameset behoren. Bekijk eerst het voorbeeld in een nieuw venster. Uitgangspunt is een document met twee framesets, waarin de frames de namen links, rechtsboven en rechtsonder hebben:
De hyperlink in het voorbeeld is als volgt opgebouwd:
In plaats van "geenscript.html" in het HREF attribuut kun je het beste de URI opnemen van het document, dat je wilt openen als de browser van de bezoeker geen JavaScript ondersteunt. Zonodig voeg je dan ook het TARGET attribuut toe. De toevoeging "return false" aan de onlick event handler zorgt ervoor, dat alleen het script wordt uitgevoerd en niet gelijktijdig het in het HREF attribuut opgegeven bestand geopend wordt. In de head van het document waarin de hyperlink is opgenomen, staat het volgende script:
In dit script wordt gebruik gemaakt van de eigenschap "location.href", welke bepaalt dat het gaat om de volledige URI van het te openen document. De eigenschap "parent.frame_naam" geeft aan in welk frame het document geopend moet worden. Daarbij verwijst "parent" naar het frameset, waarvan het huidige frame (dat wil zeggen het frame waarin de hyperlink staat) deel uitmaakt. Wanneer het document geopend moet worden in het bovenste frameset in het venster, dan gebruik je "top" in plaats van "parent". Omdat het in het voorbeeld gaat om het bovenste frameset, had de opbouw van het eerste statement in het script er ook als volgt kunnen uitzien:
Wanneer je ook het frame waarin de hyperlink staat wilt updaten, dan gebruik je "self" in plaats van "parent.frame_naam_x". Bijvoorbeeld:
In plaats van de naam van het frame kun je ook "frames[y]" gebruiken, waarbij "y" het nummer is van het frame. Bij de telling wordt gestart bij "0" en de volgorde aangehouden, waarin de frames zijn gedefinieerd. In het voorbeeld is "frames[0]" het frame met de naam "links" en zijn de frames "rechtsboven" en "rechtsonder" respectievelijk "frames[1]" en "frames[2]". Het script kun je dus ook als volgt opbouwen:
Een script als in het voorbeeld kun je ook gebruiken, wanneer meer dan twee frames tegelijk gewijzigd moeten worden. Voor drie frames bijvoorbeeld is de opbouw van het script:
In plaats van "frame_naam_x" neem je de naam op van het frame, waarin het document geopend moet worden en in plaats van "bestemming_y" het pad en de bestandsnaam van het te openen document.
Nadeel van een complete URI is dat je de site niet meer offline kunt bekijken. Als je dat toch wilt en het niet mogelijk is alle documenten in dezelfde directory te plaatsen, dan kun je er als alternatief ook voor zorgen dat Netscape Navigator 2, Microsoft Internet Explorer 3 en Opera 3/3.5 het script niet uitvoeren. Je doet dat door het script eerst te laten controleren welke browser gebruikt wordt en vervolgens de opdracht alleen te laten uitvoeren wanneer het gaat om Netscape Navigator 3 en hoger of Microsoft Internet Explorer 4 en hoger. Het controleren doe je op basis van het algemene script voor de browsertest, dat is beschreven in het onderdeel Javascript en Informatie over de browser. Dat script moet je dus als eerste in de head van het document plaatsen. Voor het updaten van twee frames ziet het script er nu als volgt uit:
Meerdere keren frames tegelijk updatenWanneer je vanuit één document meerdere keren de inhoud van twee frames tegelijkertijd wilt updaten, dan is het handig om de URL's niet in het script te plaatsen, maar in de hyperlinks. Je voorkomt daarmee dat je voor elke link een script moet opnemen. Bekijk eerst het voorbeeld in een nieuw venster. Uitgangspunt is weer een document met twee framesets, waarin de frames de namen links, rechtsboven en rechtsonder hebben:
De hyperlinks zijn als volgt opgebouwd:
In plaats van "geenscriptx.htm" in het HREF attribuut kun je het beste de URI's opnemen van de documenten, die je wilt openen als de browser van de bezoeker geen JavaScript ondersteunt. Zonodig voeg je dan ook het TARGET attribuut toe. De toevoeging "return false" aan de onlick event handler zorgt ervoor, dat alleen het script wordt uitgevoerd en niet gelijktijdig het in het HREF attribuut opgegeven bestand geopend wordt. In de head van het document waarin de hyperlinks staan opgenomen, staat het volgende script:
Uiteraard kun je ook meer dan twee frames tegelijk updaten. Voor drie frames bijvoorbeeld is de opbouw van het script:
In plaats van "frame_naam_x" neem je de naam op van het frame, waarin het document geopend moet worden. Voor een bijbehorende hyperlink is de opbouw:
In plaats van "bestemming_x" neem je het pad en de bestandsnaam op van het te openen document.
Zorg er voor dat de code tussen de haakjes achter het if-statement niet onderbroken wordt door een harde overgang naar de volgende regel.
Het script voor het updaten van frames krijgt nu de volgende opbouw:
Ander frame updaten bij openen documentWanneer je bij het openen van een document in een frame altijd gelijk een ander frame uit hetzelfde frameset wilt updaten, moet je in de head van het document het volgende script opnemen.
In plaats van "frame_naam" neem je de naam op van het frame, dat je wilt updaten en in plaats van "bestemming" het pad en de bestandsnaam van het document, dat in het te updaten frame geopend moet worden: Bekijk het voorbeeld in een nieuw venster. Om foutmeldingen te voorkomen wanneer het andere frame niet aanwezig is (bijvoorbeeld indien het document geopend wordt in het volledige venster), is het verstandig te laten testen of een frameset bestaat en de naam van het frame overeenkomt.
Zorg er voor dat de code tussen de haakjes achter het if-statement niet onderbroken wordt door een harde overgang naar de volgende regel.
Het script voor het updaten van een ander frame krijgt nu de volgende opbouw:
Document openen in volledig vensterWanneer je zelf in je documenten hyperlinks opneemt, kun je met behulp van het TARGET attribuut aangegeven of het document in een frame (en zo ja welk), in het volledige venster, of in een nieuw venster geopend moet worden. Als iemand anders een link naar een document van jou opneemt, heb je er geen controle over hoe deze geopend worden: in het volledige venster, of in een frameset van die ander. Door een klein JavaScript in de head je document op te nemen, kun je voorkomen dat het document in een frameset van een ander komt. Getest wordt hoeveel frames er zijn in het venster, waarin het document geopend wordt. Als dit aantal ongelijk is aan "0", dan wordt het document in het volledige venster geopend. Bekijk het voorbeeld. In de head van je document plaats je het volgende script:
In het document dat je in het volledige venster laat openen, kun je zelf overigens gewoon weer framesets definiëren. Document niet buiten frames openenSoms gebruik je documenten, bijvoorbeeld in een navigatieframe, waarvan je niet wilt dat ze geopend worden in een volledig venster. In dat geval kun je het onderstaande script in de head van het document opnemen. In het script wordt getest of het frameset het juiste aantal frames heeft en of het document wel in het juiste frame geopend wordt. Wordt niet aan deze condities voldaan, dan wordt een ander document geopend. Bijvoorbeeld de beginpagina van je site.
In plaats van "bestemming" neem je het pad en de bestandsnaam van het als vervanging te openen document op en voor "n" het aantal frames waarmee je werkt. In plaats van "y" neem je het nummer van het frame (bij de telling wordt gestart bij "0" en de volgorde aangehouden, waarin de frames zijn gedefinieerd) en "framenaam" vervang je door de naam van het frame. Inhoud onderdeel | Overzicht JavaScript voorbeelden | Inhoud HTML | Inhoud CSS | Begin Handleiding HTML (https://www.handleidinghtml.nl/) |