java javascript android webview mathjax

Android webview+javascript no muestra resultados en android 4.0.x, 3.x



mathjax (5)

Esta es mi actividad principal

package com.example.mathjax_issues; import android.os.Bundle; import android.app.Activity; import android.graphics.Bitmap; import android.util.Log; import android.view.Menu; import android.webkit.WebResourceResponse; import android.webkit.WebView; import android.webkit.WebViewClient; public class MainActivity extends Activity { private WebView webView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); webView=(WebView)findViewById(R.id.webView1); webView.getSettings().setJavaScriptEnabled(true); webView.setWebViewClient(new MyWebViewClient()); webView.loadUrl("file:///android_asset/MathJax/test/sample-asciimath.html"); // String html="<!DOCTYPE html> <html> <head> <title>MathJax AsciiMath Test Page</title> <!-- Copyright (c) 2012-2013 The MathJax Consortium --> <meta http-equiv=/"Content-Type/" content=/"text/html; charset=UTF-8/" /> <meta http-equiv=/"X-UA-Compatible/" content=/"IE=edge/" /> <script type=/"text/javascript/" src=/"file:///android_asset/MathJax/MathJax.js?config=AM_HTMLorMML-full/"></script> </head> <body> <p> When `a != 0`, there are two solutions to `ax^2 + bx + c = 0` and they are </p> <p style=/"text-align:center/"> `x = (-b +- sqrt(b^2-4ac))/(2a) .` </p> </body> </html> "; // Log.e("html",html); // webView.loadDataWithBaseURL("file:///android_asset/MathJax", html, "text/html","utf-8", ""); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } private class MyWebViewClient extends WebViewClient { @Override public void onPageFinished(WebView view, String url) { // TODO Auto-generated method stub super.onPageFinished(view, url); } @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { // TODO Auto-generated method stub super.onPageStarted(view, url, favicon); } } }

Este es mi muestra-asciimath.html

<!DOCTYPE html> <html> <head> <title>MathJax AsciiMath Test Page</title> <!-- Copyright (c) 2012-2013 The MathJax Consortium --> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <script type="text/javascript" src="../MathJax.js?config=AM_HTMLorMML-full"></script> </head> <body> <p> When `a != 0`, there are two solutions to `ax^2 + bx + c = 0` and they are </p> <p style="text-align:center"> `x = (-b +- sqrt(b^2-4ac))/(2a) .` </p> </body> </html>

a continuación está la imagen de mi proyecto

al compilar este código en 2.3.3,2.2,4.1.2,4.2.2 últimas versiones

Obtengo el resultado correcto de la fuente

pero cuando compilé la misma fuente en 3.0.3.1 y 4.0.3.4.0.4 versión de Android

Estoy obteniendo el resultado incorrecto como este

Los amigos me ayudan ... No puedo resolver este error ... Creo que puede haber un problema de javascript. Espero que me den una idea.

Estoy almacenando el mathjax localmente ... en activos

Gracias por adelantado ...


Funciona cuando el script no se encuentra en una carpeta externa en comparación con el archivo html.

Si saca el archivo html de la carpeta MathJax y cambia la línea en el archivo html como se muestra a continuación, funcionará.

<script type="text/javascript" src="./MathJax/MathJax.js?config=AM_HTMLorMML-full"></script>

Y, por supuesto, cambie el archivo java a webView.loadUrl("file:///android_asset/sample-asciimath.html");


Parece que el problema está relacionado con este error de Android. Si hace referencia a archivos con parámetros de url, se produce un HTTP 404 (archivo no encontrado), en su caso el script "MathJax.js? Config = AM_HTML o MML-completo" no se encontrará y no se cargará.

Superando las URL Broken WebView de Honeycomb y Ice Cream Sandwich

<!-- hack for honeycomb & ICS -- first script tag will not load but it''s --> <!-- needed for proper MathJax initialisation - clean solution would be to --> <!-- pass the init data "AM_HTMLorMML-full" in some other way to MathJax --> <script type="text/javascript" src="../MathJax.js?config=AM_HTMLorMML-full"></script> <script type="text/javascript" src="../MathJax.js"></script>


Tuve un problema similar. Lo que hice fue copiar todos los archivos .js en el mismo directorio donde estaba el html y lo agregué de la siguiente manera.

<script type="text/javascript" src="MathJax.js"></script>

Sé que suena un poco estúpido, pero funcionó.

Si eso no funciona, copie el archivo .js en el archivo html e inténtelo como en el encabezado:

<script type="text/javascript"> copy the whole MathJax.js and paste it here </script>


El problema se debe a que tiene que configurar las configuraciones (AM_HTML oMML-full.js) para mathjax en su archivo html (Copie el código en su archivo), y debe especificar la ruta completa del archivo MathJax.js, como en el código a continuación:

<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <script type="text/javascript" src="../MathJax/MathJax.js"> MathJax.Hub.Config({ config: ["MMLorHTML.js"], extensions: ["asciimath2jax.js","MathEvents.js","MathZoom.js","MathMenu.js","toMathML.js"], jax: ["input/AsciiMath","output/HTML-CSS","output/NativeMML"] }); MathJax.Ajax.loadComplete("[MathJax]/config/AM_HTMLorMML-full.js"); </script> </head> <body> <p>`/sqrt{2x + 1}`</p> </body> </html>


Algunas personas ya tenían este problema (en realidad ... muchas de ellas ...).

Una publicación (y también una respuesta) me llamó la atención: https://.com/a/7197748/1387484

Parece que debe insertar su llamada de Javascript en WebViewClient manualmente, después de que el documento se haya cargado por completo. ¡No tengo más explicaciones, pero tal vez puedas intentarlo de esta manera!