Javascript 如何调用或重新启动MathJax?

Javascript 如何调用或重新启动MathJax?,javascript,html,restart,mathjax,Javascript,Html,Restart,Mathjax,我需要MathJax再次检查我的所有页面 我的意思是,当页面被创建时,一切都很好。但是我需要在window.onload之后调用它来重新分析页面,因为在此期间页面内容已经更改 我将如何做这样的事情?请参见: 如果您正在编写动态网页 包含数学的内容在哪里 可能出现在MathJax已经 把这一页的其余部分排字,然后你就可以了 需要告诉MathJax去寻找 数学在页面中再次出现时 新的内容被制作出来了。做 那么,你需要使用 MathJax.Hub.Typeset()method。这 将导致预处理器(如

我需要MathJax再次检查我的所有页面

我的意思是,当页面被创建时,一切都很好。但是我需要在window.onload之后调用它来重新分析页面,因为在此期间页面内容已经更改

我将如何做这样的事情?

请参见:

如果您正在编写动态网页 包含数学的内容在哪里 可能出现在MathJax已经 把这一页的其余部分排字,然后你就可以了 需要告诉MathJax去寻找 数学在页面中再次出现时 新的内容被制作出来了。做 那么,你需要使用
MathJax.Hub.Typeset()
method。这 将导致预处理器(如果有 已加载)以在页面上运行 再一次,然后MathJax将寻找 页面上未处理的数学 并排版,不作任何改动 已经排版的数学

但是,您不应该直接调用此方法。[您应该]将排版操作排队,[使用此]命令:

MathJax.Hub.Queue([“Typeset”,MathJax.Hub])


此处演示:

我发现使用MathML进行动态更新的最简单方法是让MathJax进行内容更改(而不是jQuery.html(s)函数),然后它在更改内容的同时处理数学

<script type="text/javascript">
   function updateMathContent(s) {
       var math = MathJax.Hub.getAllJax("mathdiv")[0];
       MathJax.Hub.Queue(["Text", math, s]);
   }
</script>

函数updateMathContent(个){
var math=MathJax.Hub.getAllJax(“mathdiv”)[0];
Queue([“Text”,math,s]);
}


x
2.
因此,只需使用该函数将div的全部内容替换为新的MathML即可。(剧本放在头上。)


注意:如果您有一个空的math div,并且稍后添加MathML,您将得到一个脚本错误。但是,如果数学标记中没有任何内容,那么对updateMathContent的调用将起作用

根据,您不应该直接调用MathJax.Hub.Typeset(),因为MathJax是异步操作的。相反,您应该调用
MathJax.Hub.Queue([“Typeset”,MathJax.Hub])@AnthonyBatchelor:同意。我已经更新了我的答案,让这一点更加明显。未来注意:cdn.mathjax.org即将结束,请查看迁移提示。其他尝试方法:
Rerender
重新处理
<div id="mathdiv">
   <math xmlns="http://www.w3.org/1998/Math/MathML">
      <msup>
         <mi>x</mi>
         <mn>2</mn>
       </msup> 
   </math>
</div>