Javascript 使用MathJax向DOM添加元素?
我试图动态创建一个元素,然后对其进行一些处理。我试图在新创建的元素上使用MathJax,但无法在其上使用MathJax.Hub.getAllJax 我在控制台中键入此命令以进行测试:(MathOutput1在HTML中定义)Javascript 使用MathJax向DOM添加元素?,javascript,mathjax,Javascript,Mathjax,我试图动态创建一个元素,然后对其进行一些处理。我试图在新创建的元素上使用MathJax,但无法在其上使用MathJax.Hub.getAllJax 我在控制台中键入此命令以进行测试:(MathOutput1在HTML中定义) MathJax.HTML.addElement(document.body,“div”{id:“blah”},['``']); ` ` MathJax.Hub.getAllJax(“blah”); [] getAllJax(“MathOutput1”) [对象] 有
MathJax.HTML.addElement(document.body,“div”{id:“blah”},['``']);
` `
MathJax.Hub.getAllJax(“blah”);
[]
getAllJax(“MathOutput1”)
[对象]
有没有一种方法可以动态地创建一个可以执行操作的元素
我确实确认了div元素blah被添加到了dom中(至少根据chrome的说法)“
”
谢谢:)这里的问题是,您试图在MathJax.Hub
例程完全完成之前访问新元素
要解决此问题,可以在Hub
的回调队列上的回调函数中调用MathJax.Hub.getAllJax()
:
或者,您可以注册一个信号监听器,该监听器将在某个事件发生时被触发(在本例中,在排版新数学时):
有关更多信息,请参阅。我可能错了,但您可能必须先排版元素,然后才能检索它。类似于
MathJax.Hub.Queue(['Typeset',MathJax.Hub,getElementById('blah'))
无论如何,对于最新版本的MathJax,您需要在第一个代码段中插入另一行:MathJax.HTML.addElement(…)代码>MathJax.Hub.Queue([“Typeset”,MathJax.Hub,“blah]”)代码>MathJax.Hub.Queue(showBlahElement)
如果不使用Typeset
命令,getAllJax将返回一个空数组。试一试:
MathJax.HTML.addElement(document.body, "div", {id: "blah"}, ['` `']);
<div id="blah">` `</div>
MathJax.Hub.getAllJax("blah");
[]
MathJax.Hub.getAllJax("MathOutput1")
[Object]
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$$']);