使用 MathJax 将元素添加到 DOM?
Using MathJax to add element to the DOM?
我正在尝试动态创建一个元素,然后对其进行一些处理。我试图在那个新创建的元素上使用 MathJax,但我无法在其上拉 MathJax.Hub.getAllJax。
我在控制台中输入了这个来测试:(MathOutput1 在 HTML 中定义)
MathJax.HTML.addElement(document.body, "div", {id: "blah"}, ['` `']);
<div id="blah">` `</div>
MathJax.Hub.getAllJax("blah");
[]
MathJax.Hub.getAllJax("MathOutput1")
[Object]
有没有一种方法可以动态创建我可以操作的元素?
我确实确认 div 元素 blah 已添加到 dom(至少根据 chrome)“
”。 =12=]
谢谢:)
这里的问题是 MathJax operates asynchronously,而您正试图在 MathJax.Hub
例程完全完成之前访问新元素。
要解决此问题,您可以将对 MathJax.Hub.getAllJax()
的调用放在 Hub
的 回调队列 的回调函数中:
function showBlahElement () {
console.log(MathJax.Hub.getAllJax("blah"));
}
MathJax.HTML.addElement(document.body, "div", {id: "blah"}, ['$$a=b$$']);
MathJax.Hub.Queue(showBlahElement);
或者,您可以注册一个 信号侦听器,只要特定事件发生(在这种情况下,只要排版新数学)就会被触发:
MathJax.Hub.Register.MessageHook("New Math", function (message) {
console.log(MathJax.Hub.getAllJax("blah"));
});
MathJax.HTML.addElement(document.body, "div", {id: "blah"}, ['$$a=b$$']);
有关详细信息,请参阅 API docs。
我正在尝试动态创建一个元素,然后对其进行一些处理。我试图在那个新创建的元素上使用 MathJax,但我无法在其上拉 MathJax.Hub.getAllJax。
我在控制台中输入了这个来测试:(MathOutput1 在 HTML 中定义)
MathJax.HTML.addElement(document.body, "div", {id: "blah"}, ['` `']);
<div id="blah">` `</div>
MathJax.Hub.getAllJax("blah");
[]
MathJax.Hub.getAllJax("MathOutput1")
[Object]
有没有一种方法可以动态创建我可以操作的元素?
我确实确认 div 元素 blah 已添加到 dom(至少根据 chrome)“”。 =12=]
谢谢:)
这里的问题是 MathJax operates asynchronously,而您正试图在 MathJax.Hub
例程完全完成之前访问新元素。
要解决此问题,您可以将对 MathJax.Hub.getAllJax()
的调用放在 Hub
的 回调队列 的回调函数中:
function showBlahElement () {
console.log(MathJax.Hub.getAllJax("blah"));
}
MathJax.HTML.addElement(document.body, "div", {id: "blah"}, ['$$a=b$$']);
MathJax.Hub.Queue(showBlahElement);
或者,您可以注册一个 信号侦听器,只要特定事件发生(在这种情况下,只要排版新数学)就会被触发:
MathJax.Hub.Register.MessageHook("New Math", function (message) {
console.log(MathJax.Hub.getAllJax("blah"));
});
MathJax.HTML.addElement(document.body, "div", {id: "blah"}, ['$$a=b$$']);
有关详细信息,请参阅 API docs。