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="   MathJax AsciiMath Test Page       

When `a != 0`, there are two solutions to `ax^2 + bx + c = 0` and they are

`x = (-b +- sqrt(b^2-4ac))/(2a) .`

"; // 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

    MathJax AsciiMath Test Page       

When `a != 0`, there are two solutions to `ax^2 + bx + c = 0` and they are

`x = (-b +- sqrt(b^2-4ac))/(2a) .`

下面是我的项目的图像

在此处输入图像描述

在2.3.3,2.2,4.1.2,4.2.2最新版本中编译此代码时

我从源获得正确的输出

在此处输入图像描述

但是当我在3.0,3.1和4.0.3,4.0.4安卓版本中编译相同的源代码时

我得到了错误的输出

在此处输入图像描述

朋友请帮帮我…我无法解决这个错误……我想可能有一个javascript问题。希望你们给我一些想法

我在本地存储mathjax ..在资产中

提前致谢 …

Solutions Collecting From Web of "Android webview + javascript在android 4.0.x,3.x中没有显示输出"

我有类似的问题。 我所做的是将所有.js文件复制到与html相同的目录中,并按如下方式添加。

  

我知道这听起来有点愚蠢,但它确实奏效了。

如果这不起作用,将.js文件复制到html文件本身并像在标题中一样尝试:

  

有些人已经遇到过这个问题(实际上……很多人……)。

一篇post(也是一个答案)引起了我的注意: https : //stackoverflow.com/a/7197748/1387484

在文档完全加载后,您似乎必须手动在WebViewClient中注入Javascript调用。 我没有更多的解释,但也许你可以尝试这种方式!

看来这个问题与这个android bug有关。 如果您使用url参数引用文件,则会出现HTTP 404(找不到文件),在您的情况下,将找不到脚本“MathJax.js?config = AM_HTMLorMML-full”并且未加载。

克服蜂窝和冰淇淋三明治破碎的WebView URL

      

当与html文件相比,脚本没有位于外部文件夹中时,它可以正常工作。

如果您从MathJax文件夹中获取html文件并更改html文件中的行,如下所示,它将起作用。

当然,将java文件更改为webView.loadUrl("file:///android_asset/sample-asciimath.html");

问题是因为您必须在html文件中为mathjax设置配置(AM_HTMLorMML-full.js)(将代码复制到您的文件中),您必须指定MathJax.js文件的完整路径,例如代码如下:

  < !DOCTYPE html>        

`\sqrt{2x + 1}`