gpt4 book ai didi

javascript - 如何在 Android 中为 WebView 中的 Javascript 转义 MathML 字符串

转载 作者:行者123 更新时间:2023-12-03 08:01:06 28 4
gpt4 key购买 nike

我正在尝试使用 MathJax 在 WebView 中显示 MathML。

当显示我自己的 MathML 时,效果很好:

        w.evaluateJavascript("javascript:document.getElementById('math').innerHTML='"
+ "New <math xmlns=\"http://www.w3.org/1998/Math/MathML\">"
+ "<mi>d</mi><mo>&#x2260;</mo><mn>13</mn>"
+ "</math>'",
null);
w.loadUrl("javascript:MathJax.Hub.Queue(['Typeset',MathJax.Hub]);");

但是,当我尝试显示从小部件获取的 MathML 时,以下内容不起作用:

        mlOutput = mlOutput.replaceAll("(\\r|\\n)", ""); //some random trial and error
mlOutput = mlOutput.replaceAll("'", "\\'");
mlOutput = mlOutput.replaceAll("\'", "\\\'");
mlOutput = mlOutput.replaceAll("'", "\\\'");

w.evaluateJavascript("javascript:document.getElementById('math').innerHTML='"
+ mlOutput+ "'",
null);
w.loadUrl("javascript:MathJax.Hub.Queue(['Typeset',MathJax.Hub]);");

mlOutput 是一个字符串,它像这样打印到 Logcat(在我的字符串替换之前):

<math xmlns='http://www.w3.org/1998/Math/MathML'>
<mfrac>
<mrow>
<mn> 2 </mn>
</mrow>
<mrow>
<mn> 3 </mn>
</mrow>
</mfrac>
</math>

我还从 chromium 获得以下信息:

I/chromium﹕ [INFO:CONSOLE(1)] "Uncaught SyntaxError: Unexpected identifier", source:  (1)

任何有关如何正确转义 mlOutput MathML-String 以便我可以在 Javascript 中使用它的帮助将不胜感激!

到目前为止,我能找到的最好的内容是有关 Apache StringEscapeUtils.escapeJavaScript 函数的内容。 但据我所知,这不能在 Android 中使用? 我刚刚导入了 500KB .jar 库,但这不是解决方案。

编辑:解决方案是来自 MathJax 示例实现应用程序 https://github.com/leathrum/android-apps/tree/master/MathJaxApp 的某种方法

mlOutput = doubleEscape(mlOutput);

private String doubleEscape(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;
}

最佳答案

解决方案是来自 MathJax 示例实现应用程序 https://github.com/leathrum/android-apps/tree/master/MathJaxApp 的某种方法

mlOutput = doubleEscape(mlOutput);

private String doubleEscape(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;
}

关于javascript - 如何在 Android 中为 WebView 中的 Javascript 转义 MathML 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34566739/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com