JS - Nieuw venster openen |
||
|
Soms is het handig om bepaalde informatie niet in het hoofdvenster weer te geven, maar in een (vaak kleiner) nieuw venster. De bezoeker kan dit nieuwe venster openen, door bijvoorbeeld op een knop of een hyperlink te klikken. Het openen van zo'n nieuw venster kun je het beste regelen via een JavaScript, omdat je dan invloed hebt op hoe het nieuwe venster eruitziet. In het JavaScript maak je gebruik van de open-methode, welke de volgende opbouw heeft: window.open(URL, vensternaam, vensterkenmerken) URL geeft aan welk document in het nieuwe venster geopend moet worden. De vensternaam kan gebruikt worden in het TARGET attribuut van een hyperlink. De vensterkenmerken bepalen het uiterlijk van het venster. Voor alle voorbeelden in dit onderdeel geldt, dat de code tussen de haakjes achter window.open niet onderbroken mag worden door een harde overgang naar de volgende regel. |
Een kaal of een aangekleed vensterMet behulp van de vensterkenmerken kun je aangeven, hoe een met behulp van JavaScript te openen venster er moet uitzien. De volgende kenmerken kunnen gebruikt worden:
Bij de kenmerken "width", "height", "top" en "left" wordt de waarde aangegeven in pixels, bij de overige kenmerken in "yes" of "no". De kenmerken "width" en "height" hebben betrekking op dat deel van het venster, waarin het document wordt weergegeven en zijn dus exclusief de ruimte die bijvoorbeeld menubalken, knoppenbalken en schuifbalken innemen. De kenmerken "top" en "left" worden alleen door Netscape Navigator 4 en Microsoft Internet Explorer 4 ondersteund. Als geen van de kenmerken wordt benoemd in het script, wordt een compleet opgetuigd venster geopend in de standaard grootte. Als slechts enkele opties worden benoemd, zoals "width" en " height", wordt voor de overige opties als waarde "no" aangehouden. In het volgende voorbeeld zijn in het script alleen de kenmerken "width" en " height" benoemd. Er wordt dus een kaal venster weergegeven. Druk op de knop om het venster te bekijken. In de head van dit document staat het volgende script opgenomen: <SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript"> Zorg er voor dat de code tussen de haakjes achter window.open niet onderbreekt door een harde overgang naar de volgende regel. De knop wordt met een formulier gemaakt, dat in de body van het document is opgenomen. Aan het INPUT element is de onclick event handler toegevoegd (zie het onderdeel Scripts), die ervoor zorgt dat het script wordt uitgevoerd als voor de knop de click gebeurtenis optreedt. <FORM ACTION="geen_actie"> Door extra kenmerken toe te voegen, wordt een meer aangekleed venster weergegeven. Klik op de knop om het venster te bekijken. In de head van dit document staat het volgende script opgenomen: <SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript"> De opbouw van de knop is hetzelfde als in het eerste voorbeeld, alleen is de naam van de functie veranderd van NieuwVenster A in NieuwVensterB. Met de kenmerken "top" en "left" kan in browsers die dit ondersteunen de positie van het nieuwe venster bepaald worden. In de head van dit document staat het volgende script opgenomen: <SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript"> |
Nieuw venster via hyperlinkIn de voorgaande voorbeelden is gebruik gemaakt van een knop om het nieuwe venster te openen. Veel vaker zal echter gebruik gemaakt worden van een hyperlink, zoals in het volgende voorbeeld. In de head van dit document staat het volgende script opgenomen: <SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript"> De hyperlink is als volgt opgebouwd: <A HREF="js-nv2a.htm" TARGET="nieuw" onclick="NieuwVensterD(); return false;">hyperlink</A> De onclick event handler in de hyperlink, zorgt ervoor dat het script wordt uitgevoerd. De toevoeging "return false" aan de onclick event handler bepaalt, dat niet gelijktijdig de normale actie van de hyperlink moet worden uitgevoerd. In het HREF attribuut wordt ook verwezen naar het document, dat in het nieuwe venster geopend moet worden. Het TARGET attribuut heeft als waarde de naam van het venster, zoals dat in het script is gedefinieerd. Het zorgt ervoor dat browsers die JavaScript niet ondersteunen, niet het huidige venster vervangen, maar toch een nieuw (weliswaar standaard) venster openen. Bovendien wordt door het opnemen van het TARGET attribuut voorkomen, dat in browsers die "return false" niet ondersteunen, gelijktijdig het huidige document wordt vervangen en een nieuw venster wordt geopend. Netscape Navigator 2 ondersteunt bij gebruik van een hyperlink als hiervoor geen kenmerken voor het nieuwe venster, dat daardoor altijd als een volledig nieuw browservenster geopend wordt. Bovendien heeft Netscape Navigator 2 problemen met het openen van nieuwe vensters van een verschillend formaat tijdens één browsersessie: als eenmaal een bepaald formaat venster is geopend, krijgen alle volgende nieuwe vensters dezelfde afmetingen. De voorbeelden hierna kunnen daardoor anders dan bedoeld weergegeven worden. Klik op deze hyperlink om een nieuw venster te openen.
In het volgende voorbeeld maken twee hyperlinks gebruik van hetzelfde script: In de head van dit document is het volgende script opgenomen: <SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript"> De hyperlinks hebben de volgende opbouw: <A HREF="js-nv2b.htm" TARGET="nieuw" onclick="NieuwVensterE('js-nv2b.htm'); return false;">hyperlink 1</A> en <A HREF="js-nv2c.htm" TARGET="nieuw" onclick="NieuwVensterE('js-nv2c.htm'); return false;">hyperlink 2</A>
De volgende afbeelding is opgenomen in een hyperlink. Gebruik wordt gemaakt van hetzelfde script als in de voorbeelden hiervoor. De hyperlink heeft de volgende opbouw: <A HREF="js-nv2d.htm" TARGET="nieuw" onmouseover="NieuwVensterE('js-nv2d.htm'); return false;"><IMG SRC="homedsd.gif" WIDTH="38" HEIGHT="35" BORDER="0" ALT="Digitale Stad Delft"></A> |
Nieuw venster op de voorgrondAls je in een nieuw venster meerdere keren na elkaar een document wilt openen vanuit het hoofdvenster, dan is het niet nodig dat de bezoeker het nieuwe venster steeds sluit. Door te klikken op een volgende hyperlink, wordt de inhoud van het nieuwe venster automatisch ververst. Probleem is wel dat door het klikken in het hoofdvenster, het nieuwe venster op de achtergrond wordt geplaatst. Vanuit de blik van de bezoeker lijkt het klikken daardoor geen effect te hebben. Je kunt dit echter verhelpen met een JavaScript dat er voor zorgt dat het venster op de voorgrond wordt geplaatst. De eenvoudigste manier zou zijn het toevoegen van de onload event handler met de waarde "self.focus()" aan het BODY element van het in het nieuwe venster te openen document. Omdat Netscape Navigator 2 de focus methode niet kent en een foutmelding geeft, is het echter nodig een tussenstap te maken, waarbij het gebruik van de focus-methode voor deze browser wordt uitgesloten. De focus-methode werkt ook niet in Microsoft Internet Explorer 3 en in Opera, maar dit levert geen foutmelding op. In het volgende voorbeeld, waarin gebruik gemaakt wordt van een eerder beschreven script om het nieuwe venster te openen, kun je bekijken of en hoe het werkt. Klik achtereenvolgens op hyperlink 1, 2 en 3. Het eerste nieuwe venster komt zoals gebruikelijk op de voorgrond, het tweede vind je achter het hoofdvenster en het derde komt als gevolg van de focus-methode weer op de voorgrond. hyperlink 1 hyperlink 2 hyperlink 3 In de head van het document dat je opent met behulp van hyperlink 3 is het volgende script opgenomen: <SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript"> en de activering van het BODY element heeft de volgende opbouw: <BODY ... onload="VensterFocus()"> |
Nieuw venster sluitenMet JavaScript kun je niet alleen een nieuw venster openen, maar je kunt het ook weer sluiten. Het nieuwe venster wordt, op een vergelijkbare wijze als bij eerdere voorbeelden, geopend met een hyperlink. In het document in het nieuwe venster staat in de body een script, dat een hypertext link plaatst. De waarde van het HREF attribuut bevat een JavaScript opdracht, welke ervoor zorgt dat bij klikken het venster wordt gesloten. <SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript"> Voor browsers die JavaScript niet ondersteunen, kun je het NOSCRIPT element opnemen: <NOSCRIPT>Dit is een nieuw venster. Sluit het op de gebruikelijke wijze.</NOSCRIPT>
<SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript"> De in de setTimeOut methode in het script opgenomen waarde geeft aan, na hoeveel milliseconden het venster sluit. Aan het BODY element van het document in het nieuwe venster voeg je onload event handler toe: <BODY onload="SluitVenster();"> Open het nieuwe venster en zie hoe het na 3 seconden automatisch sluit.
In de head van dit document is het volgende script opgenomen: <SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript"> Open het nieuwe venster en zie hoe het na 3 seconden automatisch sluit. |
Hyperlinks in nieuw vensterSoms wil je in een nieuw venster hyperlinks opnemen, die een document openen in het venster, van waaruit het nieuwe venster geopend is. Je kunt dan gebruik maken van de opener eigenschap, welke ondersteund wordt door Netscape Navigator 3 en hoger, Microsoft Internet Explorer 3 en hoger en Opera 3.5 en hoger. Door de opener eigenschap bovendien nog eens apart te definiëren in het document, van waaruit het nieuwe venster geopend wordt, kan ook Netscape Navigator 2 er gebruik van maken. Het script in de head van dit document ziet er als volgt uit: <SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript"> De link waarmee je het venster opent, heeft bijvoorbeeld de volgende opbouw: <A HREF="JavaScript:Index('js-nv5a.htm')">Inhoudsopgave</A> In het document in het nieuwe venster is het volgende script opgenomen: <SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript"> Een link in het document in het nieuwe venster heeft de volgende opbouw: <A HREF="JavaScript:OpenLink('js-nv.htm#teruglinken')">Hyperlinks in nieuw venster</A> Open de inhoudsopgave en bekijk hoe het voorbeeld werkt in Netscape Navigator 2 en hoger, Microsoft Internet Explorer 3 en hoger en Opera 3.5 en hoger. Wanneer je het nieuwe venster wilt sluiten, nadat op een hyperlink is geklikt, voeg je aan het script in het nieuwe venster "window.close()" toe. <SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript"> Open de inhoudsopgave en bekijk in Netscape Navigator 2 en hoger, Microsoft Internet Explorer 3 en hoger en Opera 3.5 en hoger hoe het nieuwe venster na het klikken op een hyperlink sluit. Met de hyperlink waarmee je in dit voorbeeld het nieuwe venster opent, kunnen browsers die JavaScript niet ondersteunen, of waarin JavaScript niet is toegestaan, niets beginnen. Daarom is het misschien verstandig een dergelijke link te verbergen voor die browsers. Dat doe je ook weer met JavaScript: <SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript"> Inhoud Handleiding HTML Overzicht JavaScript voorbeelden JS - Nieuw venster openen
|