Mathjax脱机应用程序错误



你好,我正在尝试离线实现mathjax,我在github上提到了这一点https://github.com/leathrum/android-apps,有人能帮上忙吗?为什么这不起作用???我已经尝试了我可以在线获得的每个样本,目前在其他应用程序中,当我添加时,它可以在线工作

  <html><head><script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script><link href="main.css"type="text/css" rel="stylesheet" /></head><body>

试过这个。。。

public class MainActivity extends Activity implements OnClickListener{
    private String doubleEscapeTeX(String s)
    {
        String s1 = "";
        int i = 0;
        do
        {
            if (i >= s.length())
            {
                return s1;
            }
            if (s.charAt(i) == ''')
            {
                StringBuffer stringbuffer = new StringBuffer();
                s1 = stringbuffer.append(s1).append('\').toString();
            }
            if (s.charAt(i) != 'n')
            {
                StringBuffer stringbuffer1 = new StringBuffer();
                s1 = stringbuffer1.append(s1).append(s.charAt(i)).toString();
            }
            if (s.charAt(i) == '\')
            {
                StringBuffer stringbuffer2 = new StringBuffer();
                s1 = stringbuffer2.append(s1).append("\").toString();
            }
            i++;
        } while (true);
    }
    private int exampleIndex = 0;
    private String getExample(int index) {
        return getResources().getStringArray(R.array.tex_examples)[index];
    }

    public void onCreate(Bundle bundle)
    {
        super.onCreate(bundle);
        setContentView(R.layout.activity_main);
        WebView webview = (WebView)findViewById(R.id.webview);
        webview.getSettings().setJavaScriptEnabled(true);
        webview.getSettings().setBuiltInZoomControls(true);
        StringBuffer stringbuffer = new StringBuffer();
        StringBuffer stringbuffer1 = new StringBuffer();
        StringBuffer stringbuffer2 = new StringBuffer();
        StringBuffer stringbuffer3 = new StringBuffer();
        StringBuffer stringbuffer4 = new StringBuffer();
        StringBuffer stringbuffer5 = new StringBuffer();
        StringBuffer stringbuffer6 = new StringBuffer();
        StringBuffer stringbuffer7 = new StringBuffer();
        StringBuffer stringbuffer8 = new StringBuffer();
        webview.loadDataWithBaseURL("http://bar", stringbuffer.append(stringbuffer1.append(stringbuffer2.append(stringbuffer3.append(stringbuffer4.append(stringbuffer5.append(stringbuffer6.append(stringbuffer7.append(stringbuffer8.append("<script type='text/x-mathjax-config'>").append("MathJax.Hub.Config({ ").toString()).append("showMathMenu: false, ").toString()).append("jax: ['input/TeX','output/HTML-CSS'], ").toString()).append("extensions: ['tex2jax.js'], ").toString()).append("TeX: { extensions: ['AMSmath.js','AMSsymbols.js','noErrors.js','noUndefined.js'] } ").toString()).append("});</script>").toString()).append("<script type='text/javascript' ").toString()).append("src='file:///android_asset/MathJax/MathJax.js'").toString()).append("></script><span id='math'></span>").toString(), "text/html", "utf-8", "");
        EditText edittext = (EditText)findViewById(R.id.edit);
        edittext.setBackgroundColor(Color.LTGRAY);
        edittext.setTextColor(Color.BLACK);
        edittext.setText("");
        ((Button)findViewById(R.id.button2)).setOnClickListener(this);
        ((Button)findViewById(R.id.button3)).setOnClickListener(this);
        ((Button)findViewById(R.id.button4)).setOnClickListener(this);
        TextView textview = (TextView)findViewById(R.id.textview3);
        textview.setMovementMethod(LinkMovementMethod.getInstance());
        textview.setText(Html.fromHtml(textview.getText().toString()));
    }
    public void onClick(View view)
    {
        if (view == findViewById(R.id.button2))
        {
            WebView webview2 = (WebView)findViewById(R.id.webview);
            EditText edittext1 = (EditText)findViewById(R.id.edit);
            StringBuffer stringbuffer2 = new StringBuffer();
            StringBuffer stringbuffer3 = new StringBuffer();
            webview2.loadUrl(stringbuffer2.append(stringbuffer3.append("javascript:document.getElementById('math').innerHTML='\\[").append(doubleEscapeTeX(edittext1.getText().toString())).toString()).append("\\]';").toString());
            webview2.loadUrl("javascript:MathJax.Hub.Queue(['Typeset',MathJax.Hub]);");
        } else
        {
            if (view == findViewById(R.id.button3))
            {
                WebView webview1 = (WebView)findViewById(R.id.webview);
                ((EditText)findViewById(R.id.edit)).setText("");
                webview1.loadUrl("javascript:document.getElementById('math').innerHTML='';");
                webview1.loadUrl("javascript:MathJax.Hub.Queue(['Typeset',MathJax.Hub]);");
                return;
            }
            if (view == findViewById(R.id.button4))
            {
                WebView webview = (WebView)findViewById(R.id.webview);
                EditText edittext = (EditText)findViewById(R.id.edit);
                int i = exampleIndex;
                exampleIndex = i + 1;
                edittext.setText(getExample(i));
                if (exampleIndex > -1 + getResources().getStringArray(R.array.tex_examples).length)
                {
                    exampleIndex = 0;
                }
                StringBuffer stringbuffer = new StringBuffer();
                StringBuffer stringbuffer1 = new StringBuffer();
                webview.loadUrl(stringbuffer.append(stringbuffer1.append("javascript:document.getElementById('math').innerHTML='\\[").append(doubleEscapeTeX(edittext.getText().toString())).toString()).append("\\]';").toString());
                webview.loadUrl("javascript:MathJax.Hub.Queue(['Typeset',MathJax.Hub]);");
                return;
            }
        }
    }
}

出现类似的错误

   E/AndroidProtocolHandler(26612): Unable to open asset URL: file:///android_asset/MathJax/MathJax.js
   I/chromium(26612): [INFO:async_pixel_transfer_manager_android.cc(56)] Async pixel transfers not supported
   I/chromium(26612): [INFO:async_pixel_transfer_manager_android.cc(56)] Async pixel transfers not supported
   D/dalvikvm(26612): GC_FOR_ALLOC freed 92K, 12% free 9425K/10596K, paused 14ms, total 14ms
   I/chromium(26612): [INFO:CONSOLE(1)] "Uncaught ReferenceError: MathJax is not defined", source: http://bar/ (1)
   I/chromium(27592): [INFO:CONSOLE(1)] "Uncaught ReferenceError: MathJax is not defined", source: http://bar/ (1)
   I/chromium(27592): [INFO:CONSOLE(1)] "Uncaught TypeError: Cannot set property 'innerHTML' of null", source: http://bar/ (1)
   I/chromium(27592): [INFO:CONSOLE(1)] "Uncaught ReferenceError: MathJax is not defined", source: http://bar/ (1)
   I/chromium(27592): [INFO:CONSOLE(1)] "Uncaught TypeError: Cannot set property 'innerHTML' of null", source: http://bar/ (1)
   I/chromium(27592): [INFO:CONSOLE(1)] "Uncaught ReferenceError: MathJax is not defined", source: http://bar/ (1)
   I/chromium(27592): [INFO:CONSOLE(1)] "Uncaught TypeError: Cannot set property 'innerHTML' of null", source: http://bar/ (1)
   I/chromium(27592): [INFO:CONSOLE(1)] "Uncaught ReferenceError: MathJax is not defined", source: http://bar/ (1)
   I/chromium(27592): [INFO:CONSOLE(1)] "Uncaught TypeError: Cannot set property 'innerHTML' of null", source: http://bar/ (1)
   I/chromium(27592): [INFO:CONSOLE(1)] "Uncaught ReferenceError: MathJax is not defined", source: http://bar/ (1)
   I/chromium(27592): [INFO:CONSOLE(1)] "Uncaught TypeError: Cannot set property 'innerHTML' of null", source: http://bar/ (1)
   I/chromium(27592): [INFO:CONSOLE(1)] "Uncaught ReferenceError: MathJax is not defined", source: http://bar/ (1)
   I/chromium(27592): [INFO:CONSOLE(1)] "Uncaught TypeError: Cannot set property 'innerHTML' of null", source: http://bar/ (1)
   I/chromium(27592): [INFO:CONSOLE(1)] "Uncaught ReferenceError: MathJax is not defined", source: http://bar/ (1)
   I/chromium(27592): [INFO:CONSOLE(1)] "Uncaught TypeError: Cannot set property 'innerHTML' of null", source: http://bar/ (1)
   I/chromium(27592): [INFO:CONSOLE(1)] "Uncaught ReferenceError: MathJax is not defined", source: http://bar/ (1)

无需使用StringBuffer,只需尝试添加以下行

 WebView w = (WebView) findViewById(R.id.webview);
    w.getSettings().setJavaScriptEnabled(true);
    w.getSettings().setBuiltInZoomControls(true);
    w.loadDataWithBaseURL("http://bar/", "<script type='text/x-mathjax-config'>"
                          +"MathJax.Hub.Config({ " 
                            +"showMathMenu: false, "
                            +"jax: ['input/TeX','output/HTML-CSS'], " // output/SVG
                            +"extensions: ['tex2jax.js','toMathML.js'], " 
                            +"TeX: { extensions: ['AMSmath.js','AMSsymbols.js',"
                              +"'noErrors.js','noUndefined.js'] }, "
                          +"});</script>"
                          +"<script type='text/javascript' "
                          +"src='file:///android_asset/MathJax/MathJax.js'"
                          +"></script>"
                          +"<script type='text/javascript'>getLiteralMML = function() {"
                          +"math=MathJax.Hub.getAllJax('math')[0];"
                          +"mml=math.root.toMathML(''); return mml;"
                          +"}; getEscapedMML = function() {"
                          +"math=MathJax.Hub.getAllJax('math')[0];"
                          +"mml=math.root.toMathMLquote(getLiteralMML()); return mml;}"
                          +"</script>"
                          +"<span id='math'></span><pre><span id='mmlout'></span></pre>","text/html","utf-8","");
    w.addJavascriptInterface(new Object() { public void clipMML(String s) {
                WebView ww = (WebView) findViewById(R.id.webview);  
                android.text.ClipboardManager clipboard = (android.text.ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
                clipboard.setText(s);
                Toast.makeText(getApplicationContext(),"MathML copied to clipboard",Toast.LENGTH_SHORT).show();
        }}, "injectedObject");

相关内容

最新更新