Sovint és suficient connectar les propietats tal com es descriu anteriorment, però de vegades és més flexible o més pràctic utilitzar JS per a crear scripts en la lògica de la IGU. D'aquesta manera, l'exemple anterior es podria reescriure com:
[...]
<code file="code.js"/>
'
<logic>
<script><![CDATA[
// [...] any code at the top level is called only once
gui.addChangeCommand("mode.string", function() {
// while this anonymous function will be called, whenever "mode.string" changes
var varmode = (gui.getString("mode.string") == "variable");
gui.setValue("y.enabled", varmode);
gui.setValue("constant.enabled", !varmode);
});
]]></script>
</logic>
<dialog label="T-Test">
[...]
Això registra una funció anònima que es cridarà, sempre que canviï el valor del quadre de botons d'opció id="mode". Dins d'aquesta funció, definim una variable d'ajuda "varmode" que és certa quan el mode és "variable", falsa quan és "constant". Després utilitzem gui.setValue() per a establir les propietats «enabled» de "y" i "constant", de la mateixa manera que abans vam fer servir sentències <connect>.
Nota
Si s'ha d'invocar la mateixa funció per a canvis en diversos elements, també podeu passar una matriu dels id= respectius a gui.addChangeCommmand(). A més, per comoditat, gui.addChangeCommmand() retorna el seu segon paràmetre, que és útil si voleu fer referència a aquesta funció a un altre lloc (p. ex. cridar-la una vegada durant la inicialització). P. ex.:
let update = gui.addChangeCommand(["mode.string", "y.available"], function() {
// fa alguna cosa en cada canvi de mode.string o y.available
});
update(); // fa el mateix un cop durant la inicialització
L'enfocament amb scripts a la lògica de la IGU esdevé particularment útil quan voleu canviar l'opció disponible segons el tipus d'objecte que l'usuari ha seleccionat. Vegeu la referència per a les funcions disponibles.
Tingueu en compte que l'enfocament amb scripts a la lògica de la IGU es pot barrejar amb sentències <connect> i <convert> si voleu. Tingueu en compte també que l'etiqueta <script> permet especificar un nom de fitxer de script a més o com a alternativa a la inclusió del codi de script. Normalment la inclusió del codi de script tal com es mostra a dalt és més pràctic.