Mi aplicación de Android carga un archivo XHTML en un WebView.
Cuando la página termina de cargarse, se llaman algunos scripts.
La página HTML contiene MathML u otro código matemático que debe ser precedido por un script MathJax inyectado.
String scriptText= "MathJax.Hub.Config({ " + "showMathMenu: false, " + "jax: ['input/TeX','output/HTML-CSS'], " + "showProcessingMessages: false, " + "messageStyle: 'none', " + "extensions: ['tex2jax.js'], " + "TeX: { extensions: ['AMSmath.js','AMSsymbols.js'," + "'noErrors.js','noUndefined.js'] } " + "});"; String js_command = "var newScript = document.createElement(\"script\");" +"newScript.setAttribute('type','text/x-mathjax-config');" +"var inlineScript = document.createTextNode(\""+scriptText+"\");" +"newScript.appendChild(inlineScript);" +"document.body.appendChild(newScript);" +"newScript = document.createElement(\"script\");" +"newScript.setAttribute('type','text/javascript');" +"newScript.setAttribute('src','file:///android_asset/MathJax/es5/tex-mml-svg.js');" +"document.body.appendChild(newScript);";La inyección del código MathJax es exitosa y el código se ejecuta, representando correctamente los símbolos matemáticos.
Consulte también Mi otra pregunta sobre la inyección de script MathJax
El hecho es que se deben ejecutar otros scripts y se deben ejecutar después de la representación de MathJax.
El script MathJax no tiene el atributo async o defer porque necesito que los scripts subsiguientes se ejecuten después de la representación real de los símbolos matemáticos. Pero intenté agregar la condición de aplazamiento y nada cambia.
De hecho, me di cuenta de que cuando el script ha terminado de ejecutarse, por lo que se ejecutará el siguiente JavaScript, la representación aún continúa para algunos elementos, algunos de los cuales pueden cambiar ligeramente de tamaño, por ejemplo. Esto genera algunos problemas en mi aplicación, que se basan en gran medida en el posicionamiento exacto.
Examiné el archivo JavaScript que se usa en mi aplicación como código MathJax y vi que está todo en una sola línea, y no se puede entender nada porque está lleno de instrucciones repetitivas.
Además, no encontré el código fuente correspondiente en forma simple en el repositorio de github, aunque la carpeta está allí.
Mi pregunta: Me gustaría saber cómo ejecutar las operaciones de MathJax de forma sincronizada real, de modo que el código JavaScript posterior se ejecute cuando todo el renderizado real esté fijo en cuanto a posiciones y dimensiones.
También estoy ansioso por editar el script MathJax insertando llamadas a otros scripts dentro de una función específica para asegurarme de que se ejecuten al final.