Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/416.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从webview中的API传递json数据时,在android webview中集成MATHJAX时出错_Javascript_Android_Webview_Mathjax_Mathml - Fatal编程技术网

Javascript 从webview中的API传递json数据时,在android webview中集成MATHJAX时出错

Javascript 从webview中的API传递json数据时,在android webview中集成MATHJAX时出错,javascript,android,webview,mathjax,mathml,Javascript,Android,Webview,Mathjax,Mathml,我需要将MATHJAX集成到我的android webview中,以解析通过API以json格式传输的mathml数据。我引用了以下内容: 当我写这段代码时: public void fillWebView(final WebView w, final String yourHtml) { w.getSettings().setJavaScriptEnabled(true); w.getSettings().setBuiltInZoomControls(true); w.

我需要将MATHJAX集成到我的android webview中,以解析通过API以json格式传输的mathml数据。我引用了以下内容:

当我写这段代码时:

public void fillWebView(final WebView w, final String yourHtml) {
    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'], "
            + "extensions: ['tex2jax.js'], "
            + "TeX: { extensions: ['AMSmath.js','AMSsymbols.js',"
            + "'noErrors.js','noUndefined.js'] } "
            + "});</script>"
            + "<script type='text/javascript' "
            + "src='file:///android_asset/MathJax/MathJax.js'"
            + "></script><span id='math'></span>", "text/html", "utf-8", "");
    w.loadUrl("javascript:document.getElementById('math').innerHTML='\\\\["
            + doubleEscapeTeX(yourHtml)
            + "\\\\]';");
    w.loadUrl("javascript:MathJax.Hub.Queue(['Typeset',MathJax.Hub]);");
}

private String doubleEscapeTeX(String s) {
    String t = "";
    for (int i = 0; i < s.length(); i++) {
        if (s.charAt(i) == '\'') t += '\\';
        if (s.charAt(i) != '\n') t += s.charAt(i);
        if (s.charAt(i) == '\\') t += "\\";
    }
    return t;
}
我尝试了这个解决方案:

所以我的新代码是这样的:

[INFO:CONSOLE(1)] "Uncaught TypeError: Cannot set property 'innerHTML' of null", source:  (1)

04-21 19:57:05.449 26698-26698/com.myclasscampus I/chromium: [INFO:CONSOLE(1)] "Uncaught ReferenceError: MathJax is not defined", source:  (1)
public void fillWebView(final WebView w, final String yourHtml) {
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'], "
        + "extensions: ['tex2jax.js'], "
        + "TeX: { extensions: ['AMSmath.js','AMSsymbols.js',"
        + "'noErrors.js','noUndefined.js'] } "
        + "});</script>"
        + "<script type='text/javascript' "
        + "src='file:///android_asset/MathJax/MathJax.js'"
        + "></script><span id='math'></span>", "text/html", "utf-8", "");


w.setWebViewClient(new WebViewClient() {
    @Override
    public void onPageFinished(WebView view, String url) {
        super.onPageFinished(view, url);

        if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT){
            loadUrlKitKat(w,doubleEscapeTeX(yourHtml));
        }
        else{
            w.loadUrl("javascript:document.getElementById('math').innerHTML='\\\\["
                    + doubleEscapeTeX(yourHtml)
                    + "\\\\]';");
            w.loadUrl("javascript:MathJax.Hub.Queue(['Typeset',MathJax.Hub]);");
        }





    }
});




}

@TargetApi(Build.VERSION_CODES.KITKAT)
private void loadUrlKitKat(WebView w,String param){
w.evaluateJavascript("javascript:document.getElementById('math').innerHTML='<font color=\"#97FD97\">`"+param+"`</font>';",null);
     w.evaluateJavascript("javascript:MathJax.Hub.Queue(['Typeset',MathJax.Hub]);",null);
}

private String doubleEscapeTeX(String s) {
String t = "";
for (int i = 0; i < s.length(); i++) {
    if (s.charAt(i) == '\'') t += '\\';
    if (s.charAt(i) != '\n') t += s.charAt(i);
    if (s.charAt(i) == '\\') t += "\\";
}
return t;
}
注意:我没有在我的web视图中传递任何web url。我的web视图是用XML定义的,我需要解析来自API的mathml数据。(作为json对象)

请指导我如何解决这个问题。

也许是这样
[INFO:CONSOLE(1)] "Uncaught SyntaxError: Unexpected token ILLEGAL", source:  (1)