javascript - 使用 MathJax 向 DOM 添加元素?

标签 javascript mathjax

我正在尝试动态创建一个元素,然后对其进行一些处理。我试图在新创建的元素上使用 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)“

谢谢:)

最佳答案

这里的问题是 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 .

关于javascript - 使用 MathJax 向 DOM 添加元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35137589/

相关文章:

javascript - 将输入值传递给 JavaScript 函数

javascript - 如何将 Polymer 组件的未知子项传递到组件的 DOM 中

html - Bootstrap 和 MathJax 单行

javascript - 使用 MathJax 的所见即所得数学方程编辑器

javascript - 在 HTML5 应用程序中显示 tex 内容

mathjax - 我们如何在AMP网站中实现MathJax?

javascript - window.location 不适用于使用 react 路由器 4 的 react 应用程序

Javascript 从字符串开始直到

javascript - 不使用答案的外部 HTTP 请求

javascript - 加载 javascript 后加载 Mathjax