如何在浏览器控制台用JavaScript获取内存中的原始TeX命令?
获取MathJax原始TeX命令的JS方法
适配MathJax 3.x版本
- 先在浏览器控制台执行代码拿到页面所有数学项:
const mathItems = window.MathJax.startup.document.getMathItemsWithin(document.body); - 遍历这些项,直接取
originalText属性就是右键能看到的原始TeX:mathItems.forEach(item => { console.log('原始TeX:', item.originalText); }); - 如果上面的属性为空,试试这两个备选(部分老旧3.x版本存储位置不同):
mathItems.forEach(item => { console.log('原始TeX:', item.source || item.input.jax[0].math); });
适配MathJax 2.x版本(老旧网站大概率用这个)
如果是2.x版本,API结构不一样,用下面的代码:
const mathJaxElements = MathJax.Hub.getAllJax(document.body); mathJaxElements.forEach(jax => { console.log('原始TeX:', jax.originalText); });
要是originalText不对,再试试取源码元素的内容:
mathJaxElements.forEach(jax => { console.log('原始TeX:', jax.SourceElement().innerHTML); });
为啥你之前拿到的是MathML?
你之前直接访问<math>元素的内容,那是MathJax渲染后的输出结果,原始TeX命令存在MathJax内存里的内部数据结构中,不是DOM元素的内容,得从MathJax的API对象里捞。
内容的提问来源于stack exchange,提问作者DevShark
相关产品推荐
相关产品推荐

