20

これが私の主な活動です

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




    }



}

これは私の sample-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バージョンで同じソースをコンパイルしたとき

私はこのように間違った出力を得ています

ここに画像の説明を入力

お友達、助けてください ... このエラーを解決できません ... JavaScript に問題があるのではないかと思います。

私はmathjaxをローカルに保存しています..アセットに

前もって感謝します ...

4

5 に答える 5

6

同様の問題がありました。私がしたことは、すべての .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>
于 2013-07-01T11:41:26.443 に答える
2

すでにこの問題を抱えている人もいます (実際には... 多くの人が...)。

1つの投稿(および1つの回答)が私の注目を集めました:https://stackoverflow.com/a/7197748/1387484

ドキュメントが完全に読み込まれた後、Javascript 呼び出しを WebViewClient に手動で挿入する必要があるようです。これ以上の説明はありませんが、この方法を試すことができます。

于 2013-07-01T07:37:54.527 に答える
0

問題は、html ファイル (コードをファイルにコピー) で mathjax の構成 (AM_HTMLorMML-full.js) を設定する必要があり、次のように 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>
于 2014-05-02T00:43:31.367 に答える