gpt4 book ai didi

javascript - MathJax 未定义

转载 作者:行者123 更新时间:2023-12-03 07:17:50 25 4
gpt4 key购买 nike

通过将 MathJax 推荐的命令粘贴到我网页的 <head> 元素中,我已成功加载并配置了 MathJax。 MathJax 在我网页的 <body> 中渲染 LaTex 做得很好。

我的问题是在 MathJax 元素的最后运行 javascript 访问 <body> 对象。例如,下面的代码将 undefined 返回到控制台。这让我感到困惑——我在 <head> 元素中的命令不应该将 MathJax 创建为可以在任何地方访问的全局变量吗?

这是我的代码截图: code screenshot

以下是 <head> 元素的相关代码部分:

<script type="text/x-mathjax-config">
MathJax.Hub.Config({tex2jax: {inlineMath: [['$','$'], ['\\(','\\)']]}});
</script>
<script type="text/javascript" async
src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS_HTML">
</script>

以下是 <body> 元素的相关代码部分:

<h1 class="header">
If $ax^2+bx+c=0$, then $x=\frac{-b\pm\sqrt{b^2-4ac}}{2a}$.
</h1>

<script type="text/javascript" >
console.log(window.MathJax);
</script>

最佳答案

您正在使用 async attribute 加载 MathJax.js .因此,浏览器在脚本加载之前不会阻止渲染,而是继续处理页面。因此,现在您在 MathJax.js 获取和加载与浏览器的解析器到达页面下方的 script 标记之间进行竞争。不可避免地,解析器会在 MathJax.js 完成加载之前获胜并执行日志。因此,没有全局 MathJax 对象。

如果你删除 async,那么浏览器会先执行 MathJax.js 然后再解析剩余的页面,因此 console.log 会提供有意义的东西。 (类似地,在不支持 async 属性的旧浏览器上,你会得到一个结果。)

但是请注意,MathJax 本身是高度异步的(加载其他组件、配置等),因此您很可能需要 synchronize your code with MathJax's APIs .

关于javascript - MathJax 未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37910124/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com