通过Mathjax渲染字符串

Tom*_*ica 6 mathjax

我有一个文本区域,我希望用户输入数学表达式.我不想立即渲染任何结果,就像它在SO上工作一样.
就像是:

<div id="preview"></div>

function onkeyup(event) {
    var prev = document.getElementById("preview");
    Using just a HTML string:
    prev.innerHTML = MathJax.renderString(this.value);

    ... or get DOM object tree instead:
    //Remove previous children
    prev.innerHTML = "";
    //Append new DOM tree
    var tree = MathJax.createDOM(this.value);
    prev.appendChild(tree);
}
Run Code Online (Sandbox Code Playgroud)

那可能吗?或者我必须放入this.value一些div元素,而不是让MathJax解析该元素?(那将是愚蠢的)

Dav*_*one 5

您要执行的任务是记录在这里,而且有一个活生生的例子在这里.

基本上,该方法是使用

<div id="preview">\(\)</div>
Run Code Online (Sandbox Code Playgroud)

然后排版预览.完成后,使用该getAllJax()方法获取空数学元素jax.就像是

var jax;
MathJax.Hub.Queue(
  ["Typeset",MathJax.Hub,"preview"],
  function () {jax = MathJax.Hub.getAllJax("preview")[0]}
);
Run Code Online (Sandbox Code Playgroud)

然后使用元素jax的Text()方法来更改它显示的数学.

function onkeyup(event) {
  MathJax.Hub.Queue(["Text",jax,this.value]);
}
Run Code Online (Sandbox Code Playgroud)