javascript - 重新渲染 MathJax 文本?
问题描述
我有一个在 Apache 上运行的 Web 应用程序,它有一个文本输入框。用户可以在这里发布文本并进行预览。我已经能够在预览中使用 MathJax 动态呈现数学公式。问题是在将 HTML 代码(他们的发布文本)上传到 MySQL 服务器之后,然后当任何用户访问该站点时,MathJax 不会呈现。我保存了在用户制作一些斜体文本、渲染数学公式等之后生成的完全相同的 HTML 代码。因此,保存的 HTML 不包含“x^2”,而是由 MathJax 生成的代码以实际正确查看数学。
如何从“原始”HTML 代码中获取并呈现数学 jax 标记和 a 中的代码<div class="text-post">
?它就在那里,它只是不渲染任何东西,只是一些占用空间的空白方块。
我尝试使用MathJax.rerender();
usingwindow.onload() { ... }
以便在页面呈现时呈现 MathJax。我也试过MathJax.Hub.Queue(["Typeset", MathJax.Hub]);
,以及MathJax.typeset();
所有这些都放在window.onload { ... [code] }
.
编辑:我使用的是 MathJax 3.x,我看到一些人在其他帖子上评论说,符号从 MathJax 2.x 发生了变化,但是在他们的文档中搜索关键字“Rerender”只给出了一个关于返回 false 的非常无用的评论当调用重新渲染而不是如何实际重新渲染方程时。
解决方案
不是MathJax.typeset()
在window.onload()
事件中调用,而是MathJax.typeset()
在整个文档加载时调用。
例如:
document.addEventListener('load', function(){
MathJax.typeset()
})
推荐阅读
- facebook - Facebook 转换“相同事件 ID”错误
- java - 在 Spring Boot 中使用休眠的 JPA 未处理查询抛出空指针异常
- reactjs - React 中受控组件与非受控组件的用例
- python - 在 Python 中绘制霍夫空间
- javascript - 如何在我的文本编辑器组件中显示数据
- multithreading - 使用 apapche ignite 时无法删除 Web 容器(tomcat)中的 org.apache.ignite.internal.binary.BinaryThreadLocal 错误
- java - Java动态地图
合并以转换为 JSON - python - 如何使用 praw 按 id 检索 reddit 帖子?
- mips - 如何在“##”之后继续我的程序
- php - 除以零