Een script is een reeks van commando's die een na een na elkaar worden uitgevoerd worden.[br][br][i]GeoGebra [/i]ondersteunt twee scripting talen- [i]GGBScript [/i]en [i]Javascript[/i]. Scripts kan je typen in de tab [i]Scripting [/i]van de [img width=16,height=16]https://wiki.geogebra.org/uploads/thumb/3/30/Menu-options.svg/16px-Menu-options.svg.png[/img] Instellingen van het object waaraan je een script wil toekennen.[br][br][b]Opmerking:[/b] Het script werkt slechts na het sluiten van het venster [i]Instellingen[/i]. Dit laat je toe rustig te typen zonder dat er tegelijk een hoop dingen gebeuren in je constructie.
Verschillende objecttypes ondersteunen verschillende types vab scripting. De uitvoering van een script kan gestart worden:[br][list][*]door te klikken op een specifiek object (tab [i][b]Bij klikken[/b][/i])[/*][*]bij update van een specifiek object, wanneer de waarde of een eigenschap van het object gewijzigd word (tab [i][b]Bij update[/b][/i])[/*][*]door de inhoud van een invulvak te wijzigen (tab [i][b]Bij wijzigen[/b][/i])[/*][*]bij het loslaten van de muisknop (of het verwijderen van je vinger van het scherm bij touch screen schermen) na het verslepen van een object (tab [i][b]Bij verslepen beëindigd[/b][/i])[/*][*]bij het laden van een bestand (tab [i]Global Javascript [/i]voor JavaScript)[/*][*]Javascript listeners (zie [url=https://wiki.geogebra.org/en/Reference:JavaScript]Reference:JavaScript[/url])[/*][/list]Het verschil tussen [i]Bij update[/i] en [i]Bij wijzigen[/i] in het script bij een invulvak input box is het volgende: Een script in de tab [i]Bij update[/i] tab wordt enkel uitgevoerd wanneer de focus verwijderd wordt van het invulvak (b.v. door te klikken op een knop, te klikken in het tekenvenster enz ..), een script in de tab [i]Bij wijzigen[/i] wordt uitgevoerd vanaf het moment zelf dat de inhoud van het invulvak wijzigt en de focus nog steeds op het invulvak zelf ligt.[br][br][b]Opmerkingen:[/b][br][list][*]Zie ook de [url=https://www.geogebra.org/m/bek5uqah]demo van [i]Bij wijzigen[/i] en [i]Bij update scripts[/i][/url] voor een invulvak.[/*][*]Zie ook de the [url=https://www.geogebra.org/m/kxgvyqvj]demo van [i]Bij verslepen beëindig[/i]d scripting[/url] voor een versleepbaar punt.[/*][/list]
Je kunt scripts creëren die bestaan uit [i]GeoGebra [/i]commando's, op dezelfde manier als je ze zou gebruiken in het invoerveld. Na het triggeren van het script wordt elk commando uitgevoerd in dezelfde volgorde als waarin je ze in het script typte.[br][br][b]Voorbeeld:[/b][br][list=1][*][i][math]a[/math][/i] is schruifknop voor een geheel getal van [math]1[/math] tot [math]3[/math] (met toename [math]1[/math])[/*][*]typ als invoer: [code]lijst1 = {"red", "green", "blue"}[br][/code][/*][*]Typ in de Instellingen van [i][math]a[/math][/i] in de tab "Bij update" een script om de kleur te bepalen:[br][code]SetColor(a, Element(lijst1, a))[br][/code][/*][*]Bij het verslepen van de schuifknop zal de kleur veranderen.[/*][/list][br]Elke keer je de schuifknop versleept is er een 'update' . Dus voor elke beweging wordt het script aangesproken en wordt de waarde van [math]a[/math] gebruikt om schuifknop de passende kleur te geven.[br][br][b]Opmerking:[/b] Je kunt het symbool [math]#[/math] gebruiken voor een commentaar.[br][br][b]Tip:[/b] Sommige commando's kunnen enkel gebruikt worden voor scripting. Een lijst van deze commando's vind je op de pagina [url=https://wiki.geogebra.org/nl/Scripting_Commando%27s]Scripting_Commando's[/url].
JavaScript is programmeertaal die in vele internet technologieën gebruikt wordt. In tegenstelling tot GeoGebra Script hoeven commando's in Javascript niet in een simpele volgorde uitgevoerd worden en kan je bv. ook een control flow ([code]if[/code], [code]while[/code], [code]for[/code]) gebruikend. Voor generic JavaScript vind je een mooie tutorial op [url=https://developer.mozilla.org/en/JavaScript/Guide]developer.mozilla.org[/url]. In GeoGebra kan je specifieke JavaScript methoden gebruiken om je constructie te wijzigen. Deze methoden refereren naar een object ggbApplet. Dit betekent dat je ze [code]ggbApplet.method_naam(parameter,..,parameter) kunt noemen.[br][/code]Een volledige lijst van deze methodes vind je op [url=https://wiki.geogebra.org/en/Reference:JavaScript]Reference:JavaScript[/url].[br][br][b]VOorbeeld:[/b][br][*][code]for(var i =0;i<10;i++)[br] ggbApplet.evalCommand("A_"+i+"=(random()*10,random()*10)");[/code][/*]Dit scripot creëert 10 punten [i][math]A0[/math][sub][/sub][/i] to [i][math]A9[/math][sub][/sub][/i] met random coördinaten.[br][br][b]Opmerking:[/b] Scripting met JavaScript is erg veelzijdig, maar heel wat taken kan je ook realiseren met het eenvoudigere [i]GeoGebraScript[/i].
In het [i]Global JavaScript[/i] deel van de tab Scripting in de [img width=16,height=16]https://wiki.geogebra.org/uploads/thumb/3/30/Menu-options.svg/16px-Menu-options.svg.png[/img] [i]Instellingen[/i] kan je [b]functies definiëren [/b](geen variabelen) die je kunt gebruiken vanuit de andere scripts. Je kunt ook een [i]functie ggbOnInit(naam, api) [/i]definiëren die wordt uitgevoerd bij het inladen van de constructie. De functie [i]ggbOnInit [/i]kan je gebruiken voor zogenaamde [i]listeners[/i], zoals in onderstaand voorbeeld.[br][br][b]Voorbeeld:[/b][br][code]function onAdd(naam){[br] alert("Object "+naam+" werd toegevoegd.");[br]}[br][br]function ggbOnInit(name, api){[br] api.registerAddListener("onAdd");[br]}[br][/code][br][br]Eerst definieerden we de functie [i]onAdd[/i] die bij een gegeven string een boodschap toont, afhankelijk van deze string. Daarna wordt deze [i]ggbOnInit[/i] functie gebruikt om [i]GeoGebra [/i]te vertellen om deze functie aan te spreken telkens wanneer een nieuw object wordt toegevoegd. Bij het herladen van de constructie wordt de functie [i]ggbOnInit[/i] aangesproken en telkens de gebruiker een punt toevoegt, b.v. [i][math]A[/math][/i], verschijnt de boodschap "Object A werd toegevoegd".[br][br]Je kunt ook zgn. [i]listeners[/i] gebruiken voor acties als hernoemen, verwijderen van objecten of het wissen van een constructie. Een volledige lijst vind je op de pagina [url=https://wiki.geogebra.org/en/Reference:JavaScript]Reference:JavaScript[/url].[br][br][b]Opmerking:[/b] ggbApplet methods in [i]Global JavaScript[/i] zullen buiten ggbOnInit niet werken zoals bedoeld omdat ze zullen worden aangesproken voor de constructie ingeladen wordt.