Copiar
<!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <title>TITULO</title> <script type="text/javascript" src="../js/comandos.js" charset="utf-8"></script> </head> <body style="margin:0;padding:0; border:0; overflow: hidden;"> <!-- Aquí se carga la web.nocache que permite ejecutar escenas en local para la web --> <script type="text/javascript" language="javascript" src=" ../GeoGebra5/web/web.nocache.js" ></script> <article class="geogebraweb"></article> <!-- Aquí inicia la programación JavaScript --> <script type="text/javascript"> //BLOQUE 1 //Este primer bloque requiere mayores conocimientos de JS, por lo que... NO LO TOQUES //Método que permite escuchar la comunicación entre las dos herramientas window.addEventListener("message", funcionQueManejaLosMensajes) //BLOQUE 2 //Función que maneja los mensajes escuchados function funcionQueManejaLosMensajes(evt) { //En la variable "nombre" se almacena el mensaje enviado por DescartesJS y en "aux" el mensaje que trae "evalua" var data = evt.data; nombre=data.name; aux=nombre.search("evalua"); //Mensaje con el comando enviado desde DescartesJS, al ser "evalua" entonces invoca la función calculosCAS() para ejecutar el comando enviado. Una vez evaluado, retorna el cálculo (vCalculado) a DescartesJS if ((data.type === "set")&&(data.name==="evalua")) { dComando=data.value; rComando=calculosCAS(dComando); document.ggbApplet.reset(); window.parent.postMessage({ type: "set", name: "vCalculado", value: rComando }, '*'); window.parent.postMessage({ type: "update" }, '*'); } // se maneja un mensaje del tipo update else if (data.type === "update") { } } //BLOQUE 3 //Si el mensaje es un comando de GeoGebra como //Derivada[x^4], se busca "Derivada" en las //matrices de comandos y luego de identificar //el número del elemento, se ejecuta el comando //en inglés "Derivative" function calculosCAS(dComando){ document.ggbApplet.reset(); str=dComando.split("["); str1=str[0]; com=str1; str2=str[1]; pos=vComandosD.indexOf(com); if (pos=="-1") { calculo="No está disponible de momento" } else { cEjecuta=vComandosG[pos]; comando='f:'+cEjecuta+'['+str2; calculo=document.ggbApplet.evalCommandCAS(comando); } return calculo; } //BLOQUE 4 //Un comodín necesario para que funcione la comunicación function ggbOnInit() { comando='f:Derivative[-1000x,1]'; rComando=document.ggbApplet.evalCommandCAS(comando); } </script> </body> </html>