Android webview + javascript не показывает вывод в android 4.0.x, 3.x

Это моя основная деятельность

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); } } } 

Это мой пример-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> 

Ниже – образ моего проекта

Введите описание изображения здесь

При компиляции этого кода в 2.3.3.2.2.4.1.2.4.2.2 последних версиях

Я получаю правильный вывод из источника

Введите описание изображения здесь

Но когда я скомпилировал тот же источник в версии 3.0.3.1 и 4.0.3.4.0.4 для Android

Я получаю неправильный вывод, как это

Введите описание изображения здесь

Друзья pls помогают мне … Я не могу решить эту ошибку … Я думаю, что может быть проблема с javascript. Надеюсь, вы, ребята, дадите мне какую-нибудь идею

Я сохраняю mathjax локально .. в активах

Заранее спасибо …

Solutions Collecting From Web of "Android webview + javascript не показывает вывод в android 4.0.x, 3.x"

У меня была аналогичная проблема. Я сделал, что я скопировал все .js-файлы в том же каталоге, что и html, и добавил его следующим образом.

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

Я знаю, это звучит немного глупо, но это сработало.

Если это не сработает, скопируйте файл .js в сам файл html и попробуйте его как в заголовке:

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

У некоторых людей уже была эта проблема (на самом деле … их много …).

Я получил сообщение (а также один ответ): https://stackoverflow.com/a/7197748/1387484

Кажется, вы должны ввести свой Javascript-вызов в WebViewClient вручную, после того, как документ был полностью загружен. У меня нет больше объяснений, но, может быть, вы можете попробовать это!

Кажется, проблема связана с этой ошибкой Android. Если вы ссылаетесь на файлы с параметрами url, появляется HTTP 404 (файл не найден), в вашем случае скрипт «MathJax.js? Config = AM_HTMLorMML-full» не будет найден, а therfor не загружен.

Преодоление Broken WebView URL-адресов сотовых и мороженого

 <!-- 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> 

Он работает, когда скрипт не находит во внешней папке по сравнению с файлом html.

Если вы вытащите html-файл из папки MathJax и измените строку в html-файле, как показано ниже, он будет работать.

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

И, конечно, измените файл java на webView.loadUrl("file:///android_asset/sample-asciimath.html");

Проблема заключается в том, что вы должны установить конфигурацию (AM_HTMLorMML-full.js) для mathjax в вашем html-файле (скопируйте код в файл), и вы должны указать полный путь к файлу MathJax.js, например, в Код ниже:

  <!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>