我正在尝试通过仅在修改的段落中转换Markdown / Tex来在my Markdown editor中实现部分渲染。
基本上,我有一个#preview
元素,其中包含多个.preview_section
元素,这些元素包含转换后的HTML段落。当我更新一个或多个.preview_section
元素时,我希望MathJax只处理这些元素。
我尝试了不同的方法:
.preview_section
元素列表作为typset参数传递。这是性能方面最糟糕的解决方案。传递多于1个元素时,渲染时间几乎乘以元素数。#preview
元素作为排版参数传递。此解决方案的问题是MathJax再次渲染已渲染的script[type="math/tex; mode=display"]
。我尝试设置tex2jax ignoreClass: "tex2jax_ignore"
配置,并将.tex2jax_ignore
添加到未修改的.preview_section
元素和已呈现的script
元素,但它没有效果,因为它没有被tex2jax预处理器处理(我想)。#preview
元素作为排版参数传递,但在从预览中删除所有script[type="math/tex; mode=display"]
之后。这是最有效的,但我真的不想从预览中删除这些脚本。有没有办法告诉MathJax不要处理那些script
元素?或者在我深入了解源代码之前的任何想法......谢谢。
答案 0 :(得分:1)
好的,我刚刚发现了我的问题。 MathJax将JavaScript对象存储在DOM中的每个script[type="math/tex"]
元素中。该对象实际存储在element.MathJax
中,包含:
checked: 1
elementJax: Object
preview: span.MathJax_Preview
startNumber: 0
state: 2
其中state
是预览的状态(2表示已处理)。因此,如果已经渲染了TypeSet,则TypeSet不再渲染预览,除非您重写DOM中的脚本标记(这就是我正在做的事情),这种情况下您将丢失MathJax对象和预览的状态。这就是MathJax继续重新渲染我所有脚本的原因。